[Android] アプリが存在するのにActivityNotFoundExceptionが発生する

 外部から起動したいアプリが存在しているのに、Scheme起動やstartActivityなどしてもアプリが起動してくれない時があります。

 この場合、アプリがSTOP状態である可能性が考えられます。

公式ドキュメント↓

https://developer.android.com/about/versions/android-3.1?hl=ja#launchcontrols

STOP状態とは


 AndroidアプリにはSTOPというStateがあって、アプリは存在するが一度も起動していないとなる状態です。(Android 3.1からあるらしい)

 STOP状態のアプリはBroadcastを受信できません。

 例えば、アプリをScheme起動したい時にstartActivityしても本来起動できるはずなのにActivityNotFoundExceptionになり起動できないです。

 ちなみにアプリを一度起動しSTOP状態じゃなくなっても、アンインストールして再度インストールするとSTOP状態に戻ります。

解決策?


 startActivityで渡すIntentにFLAG_INCLUDE_STOPPED_PACKAGESを追加すると大丈夫と公式ドキュメントにはあります。

 ただ、Scheme起動については特に書いてないです。

 InstagramアプリはFLAG_INCLUDE_STOPPED_PACKAGES追加してScheme起動しても起動しなかったです。

 ちなみにシステムプリインのアプリではSTOP状態にならないらしいです。

コメントを残す

メールアドレスが公開されることはありません。