0

デフォルトのホームアプリケーション名を取得したいのですが、このために使用しました

Intent intent = new Intent("android.intent.action.MAIN");
        intent.addCategory("android.intent.category.HOME");
        intent.addCategory("android.intent.category.DEFAULT");
        ResolveInfo resolveinfo =getApplicationContext().getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); 
defaultHomeName = resolveinfo.activityInfo.name;

これはcom.android.internal.app.ResolverActivity を返し、私がフォローしようとしたときに

    List<RunningTaskInfo> runningTasks =((ActivityManager) getApplicationContext().getSystemService("activity")).getRunningTasks(1);
    if (runningTasks != null && !runningTasks.isEmpty()) {
        for (int i = 0; i < runningTasks.size(); i++) {
            RunningTaskInfo runningtaskinfo = (RunningTaskInfo) runningTasks.get(i);

        }
    }

ホーム画面で、この中にcom.sec.android.app.twlauncher.Launcherとしてホーム名を取得しました。

同じアプリケーションで異なる名前が表示されるのはなぜですか?すべてのデバイスのデフォルトのホームアプリケーションの一意の名前を取得するにはどうすればよいですか?

4

1 に答える 1

1

同じアプリケーションに異なる名前が表示されるのはなぜですか?

それらは同じアプリケーションではないためです。

具体的にcom.android.internal.app.ResolverActivityは、リゾルバー アクティビティです。これは、アクティビティ チューザー、または略して単に「チューザー」と呼ばれる傾向があります。resolveActivity()選択した を処理できるアクティビティが 2 つ以上あるためですIntent

すべてのデバイスのデフォルト ホーム アプリケーションの一意の名前を取得する方法は?

の代わりにqueryIntentActivities()onを使用すると、インストールされているすべてのホーム画面のリストが表示されます。このリストに複数のエントリがある場合、自分のホーム画面を除外した後 (1 つを作成する必要があります)、それらのどれが「既定のホーム アプリケーション」であるかを判断する確実な方法はありません。PackageManagerresolveActivity()

于 2013-03-21T11:55:49.493 に答える