外部から起動したいアプリが存在しているのに、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状態にならないらしいです。