如何从已安装的应用程序列表中打开应用程序[Android]

时间:2014-02-02 10:39:07

标签: android arraylist

已解决: 我正在拆分语音命令。如果用户说“打开浏览器”,我正在拆分它 使用“打开”,所以“浏览器”关键字在它之前包含空格。 我用“Open”&它工作了..这个愚蠢的错误让我花了一整天的时间......

我正在尝试从列表中打开具有已安装应用详细信息的特定应用。 具体来说,我将它与RecognizerIntent一起使用,意味着如果我说“计算器”,那么 它应该打开计算器App。

我已完成以下操作以获取已安装的应用列表:

PackageManager pm ;
 List<ApplicationInfo> installedApps;
 pm =  getPackageManager();
 installedApps = pm.getInstalledApplications(PackageManager.GET_META_DATA);

在List中安装应用程序后,我遍历列表以查明我需要的应用程序是否存在如下:

 for(ApplicationInfo ai : installedApps)
    {                           
     String appName = ai.loadLabel(pm).toString().toLowerCase();
     if(appName.equals(AppSearch[1)) //AppSearch[1] contains the result of speech i.e calculator
     {
       Intent openApp = new Intent(pm.getLaunchIntentForPackage(ai.packageName));
       startActivity(openApp);
       openApp.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

     }
    }

问题是它没有进入上述“if”条件。 如果我只是在“for”循环中打印应用程序的名称,那么它会显示所有名称, 但后来为什么我无法比较它&amp;然后打开它? 我做错了什么,请指导我...谢谢)

1 个答案:

答案 0 :(得分:0)

对于语音识别,我不建议期望结果100%准确,特别是对于应用名称。此外,从您的评论中,您似乎不想检查字符串是否相等,但如果应用程序名称包含语音命令,这会产生很大的不同。

如果您只想检查语音结果是否包含在应用名称中,请使用

appName.contains(AppSearch[1]);