如何获得默认的家庭应用程序?

时间:2013-03-21 11:35:09

标签: android default android-launcher

我想获取默认的家庭应用程序名称。为此我使用了

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 的主页名称。

为什么同一个应用程序显示不同的名称?如何为所有设备获取默认主应用程序的唯一名称?

1 个答案:

答案 0 :(得分:1)

  

为什么同一个应用程序显示不同的名称?

因为它们不是同一个应用程序。

具体来说,com.android.internal.app.ResolverActivity是解析器活动,我们倾向于将其称为活动选择器,或简称为“选择器”。这适用于resolveActivity(),因为有两个或更多活动可以处理您选择的Intent

  

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

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