如何点击按钮打开浏览器?

时间:2015-03-12 04:31:22

标签: android

它在每个API级别都正常工作,但在Lolipop上无法正常工作(api 21) 代码在这里:

Intent internetIntent = new Intent(Intent.ACTION_VIEW, Uri
                    .parse("http://www.google.com/"));
            internetIntent.setComponent(new ComponentName(
                    "com.android.browser",
                    "com.android.browser.BrowserActivity"));
            internetIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(internetIntent);

2 个答案:

答案 0 :(得分:0)

检查此代码:

                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_VIEW);
                intent.addCategory(Intent.CATEGORY_BROWSABLE);
                intent.setData(Uri.parse("http://www.google.com/"));
                startActivity(intent);

答案 1 :(得分:0)

是的,它不会在Lollipop中运行,或者可能无法在任何品牌的制造(索尼,三星)手机上运行,​​因为您正在尝试打开包名为com.android.browser的应用程序

internetIntent.setComponent(new ComponentName(
                    "com.android.browser",
                    "com.android.browser.BrowserActivity"));

在Lollipop中,默认浏览器是chrome,其中包含其他名称。并且在Lollipop中没有包com.android.browser的应用程序。

任何其他索尼/三星手机都会发生同样的事情。

您可以做的是要求Application Chooser Dialogfind the default browser application, and open it

1)应用程序选择器代码:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://"));
startActivity(intent);

2)代码查找默认应用并启动它:

        ComponentName cn=null;
        Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("http://"));
        ResolveInfo resolveInfo = packageManager.resolveActivity(browserIntent, PackageManager.MATCH_DEFAULT_ONLY);
        if (resolveInfo.activityInfo.packageName.equals("android")) {
            List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(browserIntent, PackageManager.MATCH_DEFAULT_ONLY);
            for (ResolveInfo info : resolveInfos) {
                if (!info.activityInfo.packageName.equals("android")) {
                    cn = new ComponentName(info.activityInfo.packageName, info.activityInfo.name);
                }
            }
            if(cn==null)
            cn = new ComponentName("com.android.browser", "com.android.browser.BrowserActivity");
        } else {
            cn = new ComponentName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name);
        }

        if(cn!=null){
            Intent openIntent = new Intent();
            openIntent.setComponent(cn);
            openIntent.setData(Uri.parse("http://www.google.com/"));
            startActivity(openIntent);
        }