DeepLink時に必要となるintent-filterの話には触れていない。
遷移後、呼び出し元に戻るための話。
課題
AndroidのDeepLink対応をすることになったがフッタータブや
ヒストリー管理があって戻るボタンを押すとアプリ内のバックスタックが動作してしまう。
いい感じに呼び出し元アプリに戻れるようにしたい。
対応
- アプリとは切り離したランディング用のActivity(=LandingActivity)を用意する。
- ランディングActivityではタブ等のグロナビは表示しない。
- taskAffinityをデフォルトとは異なるものにする(.landing など)
- autoRemoveFromRecents="true" を設定する
<activity android:name=".activity.LandingActivity" android:autoRemoveFromRecents="true" android:exported="true" android:taskAffinity=".landing">
taskAffinityを指定することで自分のアプリのタスクと分離するため、
別アプリから起動した際に自アプリのタスクと結び付かなくなる。
こうすることでLandingActivityをfinishした時点で呼び出し元に戻る。
taskAffinityを分けるとタスクが別れるのでオーバービュー画面(最近使用したアプリ)に別々に表示されるようになる。ここに表示する必要はないので
android:autoRemoveFromRecents="true" を使って削除する。
いずれにしてもtaskAffinityを気にする機会に初めて遭遇した。