Android获取本机浏览器包名,并调用指定浏览器打开网页

昨天还在嘀咕着项目快做完了,接下来公司会安排什么事,结果今天就给了我一个新任务,其中要做的一个功能就是指定调用谷歌浏览器打开网页,如果没有该浏览器就提示客户进行下载,查找一番资料后,觉得这种东西还是要记录一下,避免忘记。一下为可能会用到的几个方法。
1、查找包名和class,使用如下的方法我们就可以将本机安装的所有的浏览器的报名和class的名字查找出来了。

private void hasBrowser(Context context){
        PackageManager pm=context.getPackageManager();
        Intent intent=new Intent(Intent.ACTION_VIEW);
        intent.addCategory(Intent.CATEGORY_BROWSABLE);
        intent.setData(Uri.parse("http://"));
        List<ResolveInfo> list=pm.queryIntentActivities(intent, PackageManager.GET_INTENT_FILTERS); 
        if(size>0){
            for (int i = 0; i < size; i++) {
                ActivityInfo activityInfo=list.get(i).activityInfo;
                Log.i("GetBrowserInfo", "The packageName is "+activityInfo.packageName+" "+activityInfo.name+"\n");
            }

        }
    }

2、根据包名判断我们的应用是否安装,使用该方法我们只需要传入context和我们需要判断的报名就好了,如果返回true,则表明我们的应用已经安装过了,我们可以直接调用。

private boolean isAppInstalled(Context context,String packageName){
        PackageInfo packageInfo;
        try {
            packageInfo=context.getPackageManager().getPackageInfo(packageName, 0);
        } catch (NameNotFoundException e) {
            // TODO Auto-generated catch block
            packageInfo=null;
            e.printStackTrace();
        }
        if(packageInfo==null){
            return false;
        }else{
            return true;
        }
    }

3、调用指定的浏览器,传入我们的url地址打开网页,当然如果没有我们的浏览器,我们可以传入一个下载的url地址进行下载,因为我们的服务器端没有提供,我传入的url地址是我在百度上面下载的时候复制的url地址,也是可以达到我们想要的结果的,只是不能实现自动安装。

if(isAppInstalled(context, "com.android.chrome")){
                    Intent intent=new Intent(Intent.ACTION_VIEW);
                    intent.addCategory(Intent.CATEGORY_BROWSABLE);
                    intent.setData(Uri.parse("http://u.androidgame-store.com/new/game1/4/110904/com.android.chrome-49.0.2623.91-262309101.apk?f=baidu_1"));//复制的百度下载链接
                    intent.setClassName("com.android.chrome", "com.google.android.apps.chrome.Main");
                    context.startActivity(intent);
                }else{
                    Toast.makeText(context, "亲,您尚未安装谷歌浏览器,请先安装", Toast.LENGTH_SHORT).show();
                    //http://u.androidgame-store.com/new/game1/4/110904/com.android.chrome-49.0.2623.91-262309101.apk?f=baidu_1
                    Intent intent=new Intent(Intent.ACTION_VIEW);
                    intent.addCategory(Intent.CATEGORY_BROWSABLE);
                    intent.setData(Uri.parse("http://u.androidgame-store.com/new/game1/4/110904/com.android.chrome-49.0.2623.91-262309101.apk?f=baidu_1"));
                    intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");//调用系统浏览器下载,下载到系统的下载地址
                    context.startActivity(intent);
                }
    }

好了,我的功能已经差不多实现了,至于自动安装,还在思考,想到了再重新编辑,如果有人有好的建议,也可以留言给我,不胜感激。

没有更多推荐了,返回首页