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()因为有两个或多个活动可以处理您选择的Intent.

如何为所有设备的默认家庭应用程序获取唯一名称?

通过使用queryIntentActivities()onPackageManager而不是resolveActivity(),您将获得所有已安装主屏幕的列表。如果此列表上有多个条目,则在过滤掉您自己的主屏幕(如果您正在编写一个)之后,您没有必要的可靠方法来确定其中哪个是“默认主应用程序”。

于 2013-03-21T11:55:49.493 回答