我知道以编程方式打开应用程序,我们可以这样做:
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.package.name");
startActivity(launchIntent);
但是,如果我不知道包装名称,怎么做呢;只是应用程序名称?
谢谢!
编辑:我尝试通过打开应用并检查日志来获取软件包名称,但软件包名称并未显示。
答案 0 :(得分:4)
也许这样的东西会有所帮助,但我必须补充一点,这是一种糟糕的方法,因为不同的应用程序的应用程序名称可能相同,而某些应用程序(如“联系人”)根据语言集具有不同的标签< / p>
/**
*
* @param appName The target app to launch, if there are multiple apps with same name, the first found will be launched
* @throws IllegalArgumentException If the target app was not found
*/
public void runApp(String appName) throws IllegalArgumentException {
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
for ( ResolveInfo info : getPackageManager().queryIntentActivities( mainIntent, 0) ) {
if ( info.loadLabel(getPackageManager()).equals(appName) ) {
Intent launchIntent = getPackageManager().getLaunchIntentForPackage(info.activityInfo.applicationInfo.packageName);
startActivity(launchIntent);
return;
}
}
throw new IllegalArgumentException("Application not found!");
}