Android打算打开应用程序,但不起作用

Android打算打开应用程序,但不起作用,android,android-intent,Android,Android Intent,我正在尝试打开谷歌语音搜索应用程序 Intent i; PackageManager manager = getPackageManager(); try { i = manager.getLaunchIntentForPackage("com.google.android.voicesearch"); if (i == null) throw new PackageManager.NameNotFoundExcep

我正在尝试打开谷歌语音搜索应用程序

    Intent i;
    PackageManager manager = getPackageManager();
    try {
        i = manager.getLaunchIntentForPackage("com.google.android.voicesearch");
        if (i == null)
            throw new PackageManager.NameNotFoundException();
        i.addCategory(Intent.CATEGORY_LAUNCHER);
        startActivity(i);
    } catch (PackageManager.NameNotFoundException e) {
    }
这不会启动语音搜索应用程序, 但是,如果我使用com.google.android.apps.maps作为包名,则会打开谷歌地图应用程序

我不明白为什么语音搜索没有打开,即使包名是正确的。

解决方案

Intent intent = new Intent(RecognizerIntent.ACTION_WEB_SEARCH);
startActivity(intent);
请看 有关解决方案的更多信息

谢谢。

如您所知,getLaunchIntentForPackage(String packageName)

返回“良好”意图,以在包中启动前门活动[…]

当前的实现将首先考虑 对于类别信息中的主要活动,下一步是主要活动 category_启动器中的活动,如果两者都不存在,则返回null 找到了

因此,在intent中,已经设置了类别。如果您手动更改它,可能是违背了意图,因为该类别可能不是经理找到的正确类别

所以,只需删除该行

i.addCategory(Intent.CATEGORY_LAUNCHER);