Android 按名称而不是程序包名称查找其他应用

Android 按名称而不是程序包名称查找其他应用,android,android-intent,Android,Android Intent,我想让用户使用“open(…)”在我的应用程序中打开应用程序。。。这方面一切正常,我可以获取应用程序的名称参数。但是,当我只有一个带有应用程序名称值的字符串app_name时,如何仅凭其名称查找和启动应用程序 非常感谢如果您可以解析应用程序名,那么您就清楚地拥有ApplicationInfo,使用此获取软件包,然后了解如何使用PackageManager的软件包来获取该应用程序的启动意图。如果您可以解析应用程序名,那么您就清楚地拥有ApplicationInfo,使用此选项获取软件包,然后了解如

我想让用户使用“open(…)”在我的应用程序中打开应用程序。。。这方面一切正常,我可以获取应用程序的名称参数。但是,当我只有一个带有应用程序名称值的字符串app_name时,如何仅凭其名称查找和启动应用程序


非常感谢

如果您可以解析应用程序名,那么您就清楚地拥有ApplicationInfo,使用此获取软件包,然后了解如何使用PackageManager的软件包来获取该应用程序的启动意图。

如果您可以解析应用程序名,那么您就清楚地拥有ApplicationInfo,使用此选项获取软件包,然后了解如何将软件包与PackageManager一起使用,以获取该应用程序的启动意图。

您可以使用以下代码以编程方式完成此操作:

    PackageManager pm = getPackageManager();
    //get a list of installed apps.
    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
    for (ApplicationInfo applicationInfo : packages) {
        if (applicationInfo.loadLabel(pm).toString().equals("My App Name To Test Here")){
            Intent launchIntent = pm.getLaunchIntentForPackage(applicationInfo.packageName);
            startActivity(launchIntent);
        }
    }
PackageManager pm=getPackageManager();
//获取已安装应用程序的列表。
List packages=pm.getinstalledApplication(PackageManager.GET_元数据);
适用于(ApplicationInfo ApplicationInfo:packages){
if(applicationInfo.loadLabel(pm.toString().equals(“要在此处测试的我的应用程序名称”)){
Intent launchIntent=pm.getLaunchIntentForPackage(applicationInfo.packageName);
startActivity(launchIntent);
}
}

您可以使用以下代码以编程方式执行此操作:

    PackageManager pm = getPackageManager();
    //get a list of installed apps.
    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
    for (ApplicationInfo applicationInfo : packages) {
        if (applicationInfo.loadLabel(pm).toString().equals("My App Name To Test Here")){
            Intent launchIntent = pm.getLaunchIntentForPackage(applicationInfo.packageName);
            startActivity(launchIntent);
        }
    }
PackageManager pm=getPackageManager();
//获取已安装应用程序的列表。
List packages=pm.getinstalledApplication(PackageManager.GET_元数据);
适用于(ApplicationInfo ApplicationInfo:packages){
if(applicationInfo.loadLabel(pm.toString().equals(“要在此处测试的我的应用程序名称”)){
Intent launchIntent=pm.getLaunchIntentForPackage(applicationInfo.packageName);
startActivity(launchIntent);
}
}

我试过,但该应用程序只延迟了约2秒,在WhatsApp和Spotify(我都安装了)上什么也没做@FlorentAnders它对我有效,没有任何问题(都没有延迟)。我还试着在模拟器上启动“设置”,效果很好。在emulator上,我在logcat中得到一个stacktrace,它在
应用程序inf.loadLabel(pm)
资源$NotFoundException
)中被捕获。logcat说什么?我没有logcat,它只是不加载应用程序。。我再查一遍!我不需要添加任何权限?你用什么操作系统测试过?我在预览2号不,你不需要任何许可。我的测试是在棒棒糖上进行的,而不是M预览,在M中,权限将发生变化,这可能是由于它。PackageManager已经改变了很多。我会试着看看这些变化。我试过了,但这个应用程序只是延迟了大约2秒,在WhatsApp和Spotify(我都安装了)上什么也没做。FlorentAnders它对我来说没有任何问题(都没有延迟)。我还试着在模拟器上启动“设置”,效果很好。在emulator上,我在logcat中得到一个stacktrace,它在
应用程序inf.loadLabel(pm)
资源$NotFoundException
)中被捕获。logcat说什么?我没有logcat,它只是不加载应用程序。。我再查一遍!我不需要添加任何权限?你用什么操作系统测试过?我在预览2号不,你不需要任何许可。我的测试是在棒棒糖上进行的,而不是M预览,在M中,权限将发生变化,这可能是由于它。PackageManager已经改变了很多。我将试着看看这些变化。请您告诉我如何才能做到这一点请您告诉我如何才能做到这一点