Android意图打开应用程序不工作

时间:2014-01-05 16:13:50

标签: android android-intent

我正在尝试打开Goog​​le语音搜索应用

    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作为软件包名称,则会打开Goog​​le地图应用。

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

解决方案

Intent intent = new Intent(RecognizerIntent.ACTION_WEB_SEARCH);
startActivity(intent);

请看 Launch Preinstalled App from activity (Google Voice Search) Android了解有关解决方案的更多信息。

谢谢。

1 个答案:

答案 0 :(得分:1)

正如您可以阅读here,getLaunchIntentForPackage(String packageName)

  

返回一个“好”意图,在包[...]

中启动前门活动      

首先是当前的实现   对于CATEGORY_INFO类别中的主要活动,接下来是主要活动   CATEGORY_LAUNCHER类别中的活动,如果两者都不返回null   找到了。

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

所以,只需删除

i.addCategory(Intent.CATEGORY_LAUNCHER);