前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

DeepLink時のバックボタン対応

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を気にする機会に初めて遭遇した。

参考

タブの表示を放棄している点を参考