Android 在知道包名的情况下启动应用程序
有人能告诉我如何在只知道包名的情况下启动新的应用程序吗?我没有关于什么活动是主要活动的信息。尝试使用Android 在知道包名的情况下启动应用程序,android,Android,有人能告诉我如何在只知道包名的情况下启动新的应用程序吗?我没有关于什么活动是主要活动的信息。尝试使用PackageManager,只需使用以下两行代码,就可以启动任何已知程序包名称的已安装应用程序: Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.abc"); startActivity( launchIntent ); 如果您不知道要启动的应用程序的包名,请尝试使用 Packag
PackageManager
,只需使用以下两行代码,就可以启动任何已知程序包名称的已安装应用程序:
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.abc");
startActivity( launchIntent );
如果您不知道要启动的应用程序的包名,请尝试使用
PackageManager pm;
pm = getPackageManager();
// get a list of installed apps.
packages = pm.getInstalledApplications(0);
有关更多信息,请参阅此链接。您可以通过课程获得发布意图:
请注意,如果找不到包,则返回null。因此,您可能需要添加一个空检查:
if (launchIntent != null) {
context.startActivity(launchIntent);
} else {
Toast.makeText(context, "Package not found", Toast.LENGTH_SHORT).show();
}
先生,为什么我不能通过获取其包名来启动启动器?它给出了java.lang.NullPointer异常?是否启动了一个完整的新实例?我想启动现有的一个。我该怎么做?我会添加标志(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_,如果需要的话)以确保应用程序状态在已经打开的情况下是相同的。在Android 11上更改包可见性后,这仍然是一个可靠的解决方案吗?@argenkiwi:我很少使用这种方法。我希望它要么“开箱即用”,要么您需要
作为MAIN
/启动器
意图
结构。好了,它还没有完全损坏。这会启动一个完整的新实例吗?我想启动现有的一个。我该怎么做?@hohny-tex你能找到解决问题的方法吗problem@JohnyTex我知道有点晚了,但是你可以尝试LaunchIntent.setFlags(“Intent.FLAG\u ACTIVITY\u NEW\u TASK”)代码>和启动Intent.setFlags(“Intent.FLAG\u ACTIVITY\u SINGLE\u TOP”)
在安卓11上更改了软件包可见性之后,这仍然是一个可靠的解决方案吗?这个答案与以前的答案只有很小的不同,只是它比以前的答案更新了3年。我看不出upvotes是如何合理的。但至少他发布了这样一条消息:如果没有包,该方法将返回null。我正要尝试捕获“未找到活动”异常。@hBrent
if (launchIntent != null) {
context.startActivity(launchIntent);
} else {
Toast.makeText(context, "Package not found", Toast.LENGTH_SHORT).show();
}
Intent intent;
PackageManager pm = getActivity().getPackageManager();
intent = pm.getLaunchIntentForPackage("com.package.name");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);