Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在知道包名的情况下启动应用程序_Android - Fatal编程技术网

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);