无法使用包名称从我的应用启动其他应用

时间:2014-12-29 04:32:48

标签: android google-chrome

我正在尝试从我的应用程序中打开Chrome应用。代码很简单。

我使用以下代码获取了Chrome应用包的名称:

    PackageManager manager = Values.activity.getPackageManager();

        Intent i = new Intent(Intent.ACTION_MAIN, null);
        i.addCategory(Intent.CATEGORY_LAUNCHER);
        List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0);
        for(ResolveInfo ri:availableActivities){
            apps.add(ri.activityInfo.packageName);
        }

        //the package name of Chrome from packagemanager is "com.android.chrome"

我试图像这样打开Chrome:

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.android.chrome");
startActivity( LaunchIntent );

但没有错误就没有任何事情发生,我的logcat说:

12-28 20:28:52.298: I/ActivityManager(482): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.android.chrome cmp=com.android.chrome/com.google.android.apps.chrome.Main} from pid 20474

我错过了什么?从packagemanager检索的包名是错误的吗?

1 个答案:

答案 0 :(得分:2)

以下是从您的应用程序启动浏览器的通用代码:

                String uriString = "http://stackoverflow.com/";
                Intent intent = new Intent();
                intent.setData(Uri.parse(uriString));
                intent.setAction(Intent.ACTION_VIEW);

                if (intent.resolveActivity(getPackageManager())!= null) {
                    startActivity(intent);
                }   else {
                    // Any browser is not available
                }

我可以知道您为什么只想启动Chrome吗?