【问题标题】:What is the default browser, find out programmatically on Android什么是默认浏览器,在 Android 上以编程方式查找
【发布时间】:2013-12-09 09:54:33
【问题描述】:

我想以编程方式找出默认浏览器的包名。

(如果知道包名,我可以将其图标放在按钮上,或者在没有启动器的情况下启动。)

PackageManager 中有 resolveActivity(),但 Google 文档说:如果找到多个匹配的活动并且没有默认设置,则返回包含其他内容的 ResolveInfo,例如活动解析器。 em>

【问题讨论】:

    标签: android android-browser


    【解决方案1】:

    我希望有人能写出更优雅的东西。但这东西有效:

    public static ComponentName getDefaultBrowserComponent(Context context) {
        Intent i = new Intent()
            .setAction(Intent.ACTION_VIEW)
            .setData(new Uri.Builder()
                    .scheme("http")
                    .authority("x.y.z")
                    .appendQueryParameter("q", "x")
                    .build()
                    );
        PackageManager pm = context.getPackageManager();
        ResolveInfo default_ri = pm.resolveActivity(i, 0); // may be a chooser
        ResolveInfo browser_ri = null;
        List<ResolveInfo> rList = pm.queryIntentActivities(i, 0);
        for (ResolveInfo ri : rList) {
            if (ri.activityInfo.packageName.equals(default_ri.activityInfo.packageName)
             && ri.activityInfo.name.equals(default_ri.activityInfo.name)
            ) {
                return ri2cn(default_ri);
            } else if ("com.android.browser".equals(ri.activityInfo.packageName)) {
                browser_ri = ri;
            }
        }
        if (browser_ri != null) {
            return ri2cn(browser_ri);
        } else if (rList.size() > 0) {
            return ri2cn(rList.get(0));
        } else if (default_ri == null) {
            return null;
        } else {
            return ri2cn(default_ri);
        }
    }
    private static ComponentName ri2cn(ResolveInfo ri) {
        return new ComponentName(ri.activityInfo.packageName, ri.activityInfo.name);
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      • 2012-11-18
      • 2018-12-24
      • 1970-01-01
      相关资源
      最近更新 更多