首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Android L中显示错误的默认应用程序列表

在Android L中显示错误的默认应用程序列表
EN

Stack Overflow用户
提问于 2016-11-09 15:13:49
回答 2查看 800关注 0票数 11

我想在Android L中获得所有的默认应用程序。我使用了下面的代码,但他们给了我一个错误的解决方案。让我们先看看我的代码

代码语言:javascript
运行
复制
private void getMyAppLauncherDefault() {
    final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN);
    filter.addCategory(Intent.CATEGORY_HOME);
    List<IntentFilter> filters = new ArrayList<IntentFilter>();
    filters.add(filter);
    List<ComponentName> activities = new ArrayList<ComponentName>();
    final PackageManager packageManager = (PackageManager) getPackageManager();

    packageManager.getPreferredActivities(filters, activities, null);
    for (ComponentName activity : activities) {

        Log.d(TAG,"======packet default:==="+activity.getPackageName());
    }
}

这是log。日志显示com.google.android.googlequicksearchboxcom.vlingo.midas之间的错误结果。它们都是语音应用,但我将com.google.android.googlequicksearchbox设置为默认设置。我不知道为什么日志显示com.vlingo.midas。我怎么才能修复它?谢谢

代码语言:javascript
运行
复制
 16:02:44.817 /com.exam D/Sample: ======packet default:===com.sec.android.gallery3d
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.android.mms
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.android.mms
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.vlingo.midas
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.sec.android.app.sbrowser
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.sec.android.gallery3d
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.android.mms
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.sec.android.app.launcher
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.sec.android.app.sbrowser
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.android.mms
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.google.android.googlequicksearchbox
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.sec.android.app.sbrowser
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.sec.android.gallery3d
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.android.mms
 16:02:44.827 /com.exam D/Sample: ======packet default:===com.google.android.apps.plus

更新:有默认的应用程序名称

EN

回答 2

Stack Overflow用户

发布于 2016-11-17 17:31:25

要检查您的应用程序是否设置为“默认”,请尝试以下代码:

代码语言:javascript
运行
复制
 public static boolean isMyAppDefault(Context context) {
        final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN);
        filter.addCategory(Intent.CATEGORY_HOME);

        List<IntentFilter> filters = new ArrayList<IntentFilter>();
        filters.add(filter);

        final String myPackageName = context.getPackageName();
        List<ComponentName> activities = new ArrayList<ComponentName>();
        final PackageManager packageManager = (PackageManager) context.getPackageManager();

        packageManager.getPreferredActivities(filters, activities, null);

        for (ComponentName activity : activities) {
            if (myPackageName.equals(activity.getPackageName())) {
                return true;
            }
        }
        return false;
    }
票数 2
EN

Stack Overflow用户

发布于 2016-11-17 17:59:52

上面添加的代码是完全正确的。它确实做了它想要做的事情。

现在您已经将com.google.android.googlequicksearchbox语音应用程序设置为默认设置,这就是它显示在日志中的原因。而com.vlingo.midas显示可能是因为它被设置为其他类别的默认设置,而不是语音。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40501710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档