过去几天我一直在试图弄清楚如何启动在 Android API 25 中添加的应用程序快捷方式,并且我取得了一些成功。启动一些快捷方式,如 Google Play Music 的工作没有问题我猜是因为这些快捷方式是使用action.MAIN和category.LAUNCHER启动活动或导出,但其他活动抛出“java.lang.SecurityException:Permission Denial:starting Intent”,这似乎也合理。这似乎是可行的,因为像 Pixel Launcher、Sesame Shortcuts 等应用程序可以做到这一点,必须有一些特殊的意图标志或其他东西。我什至尝试在我的应用程序中捕捉快捷方式意图并复制它但没有成功
这是我如何为 Google Chrome 的“新标签”快捷方式执行此操作的示例:
val componentName = ComponentName("com.android.chrome", "org.chromium.chrome.browser.LauncherShortcutActivity")
val intent = Intent(action)
intent.component = componentName
intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT or Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_TASK_ON_HOME)
startActivity(intent)
我从 activityInfo 元数据中获得了这些值,这些值可以使用PackageManager获取