如何使用应用程序包名启动新应用程序?我不知道哪个活动是主要的。
只需使用以下两行代码,就可以启动已知包名的任意安装应用程序:
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.abc");
startActivity( launchIntent );
如果你不知道想要启动的应用程序的包名,那么可以尝试使用以下方法:
如果你不知道想要启动的应用程序的包名,那么可以尝试使用以下方法:
PackageManager pm;
pm = getPackageManager();
// get a list of installed apps.
packages = pm.getInstalledApplications(0);
更多信息,请参考此链接:使用包管理器。
尝试使用PackageManager
和getLaunchIntentForPackage()
。
MAIN
/LAUNCHER
Intent
结构使用<queries>
。 据我所知,它并没有完全损坏。 - CommonsWarePackageManager
类获得启动意图:PackageManager pm = context.getPackageManager();
Intent launchIntent = pm.getLaunchIntentForPackage("com.example.package");
context.startActivity(launchIntent);
请注意,如果未找到包,则getLaunchIntentForPackage
将返回null。因此,您可能需要添加空值检查:
请注意,如果未找到包,则getLaunchIntentForPackage
将返回null。因此,您可能需要添加空值检查:
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);
Intent intent = getPackageManager().getLaunchIntentForPackage("app.package.name");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
if (intent != null) {
startActivity(intent);
} else {
Toast.makeText(context, "Package not found", Toast.LENGTH_SHORT).show();
}
val packageName = "com.google.android.youtube"
var intent = activity!!.packageManager.getLaunchIntentForPackage(packageName)
if (intent == null) {
if (intent == null) {
intent = try {
Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$packageName"))
} catch (e: Exception) {
Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=$packageName"))
}
}
startActivity(intent)
对于 Android 11 (API 级别 30) 或更高版本,在 AndroidManifest.xml 文件中:
<queries>
<package android:name="com.google.android.youtube" />
<package android:name="com.example.app" />
</queries>
或者我们可以允许所有软件包(不推荐)。
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" />
参考文献
LaunchIntent.setFlags("Intent.FLAG_ACTIVITY_NEW_TASK");
和LaunchIntent.setFlags("Intent.FLAG_ACTIVITY_SINGLE_TOP");
。 - KISHORE_ZE