2

期待どおりに機能するランチャーとして機能するアプリを作成しましたが、ユーザーがネイティブの Android ランチャーを起動できるようにしたいと考えています。

Android Launcher のパッケージ名がcom.android.launcher

ただし、呼び出してこのパッケージから起動インテント名を取得しようとすると

packageManager.getLaunchIntentForPackage("com.android.launcher");

それはnullになります。

それで、パッケージ名を使用してそれを起動する方法について途方に暮れています。おそらく別の方法があるのではないかと思っていますか?

ティア

4

1 に答える 1

6

Androidランチャーのパッケージ名はcom.android.launcherです。

ただし、特定のデバイスにある場合とない場合があります。実際、私はそれがおそらくデバイスの数パーセントにあると予想します。ほとんどのメーカーは、ストックのホーム画面を自社のものに交換しています。

おそらく別の方法があるかどうか疑問に思っていますか?

PackageManagerおよびを使用して、およびqueryIntentActivities()をサポートするすべてのアクティビティを検索します。リストからアクティビティを削除します。残りが1つしかない場合は、そのアクティビティを起動します。複数残っている場合は、自分のチューザーを作成して、使用可能なオプションを表示します。そうすれば、他にどんなホーム画面が存在していても、それを起動することができます。ACTION_MAINCATEGORY_HOME

アップデート

ResolveInfo名前付きの、および名前付きのlaunchable/テンプレートACTION_MAINCATEGORY_HOME指定して、そのアクティビティを起動するには、次のようにします。Intenti

ActivityInfo activity=launchable.activityInfo;
ComponentName name=new ComponentName(activity.applicationInfo.packageName,
                                     activity.name);

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
            Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
i.setComponent(name);

startActivity(i);  
于 2012-06-18T20:22:44.257 に答える