私は Android でランチャーを作成していますが、これは私がしばらくの間修正しようとしていた問題です。
ランチャーの最初で実行されているすべてのアクティビティを照会するコードを以下に示しますonResume()
。
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List<ResolveInfo> infos = packageManager.queryIntentActivities(mainIntent, 0);
for (final ResolveInfo info : infos) {
// create my own recrord for each activity
}
問題は、ランチャーをデフォルトおよびreboot
デバイスとして設定すると、毎回上記のコードで完全なリストの一部しか取得できないことです。いくつかの大きなファット アクティビティ (マメット ナイトなど) が常に欠落しているようです。ただし、上記のコードを 2 回実行すると、完全なリストが返されます。誰にも理由がありますか?私の推測では、PackageManager は太ったアクティビティを解析するのに時間がqueryIntentActivities()
かかり、あまりにも早く呼び出された場合、部分的なリストを返すだけです。それは本当ですか?
しかし、なぜデフォルトのランチャーにこの問題がないのでしょうか?