Ярлыки на Oreo для приложений запуска NON
У меня есть панель запуска боковой панели, которая используется в сочетании с домашней панелью запуска по умолчанию, это означает, что она на самом деле работает как домашняя панель запуска, но не установлена в качестве домашней панели запуска по умолчанию.
Вопрос
Можно ли использовать ярлыки, созданные с помощью ShortcutManager
внутри моего приложения? Если да, то как? Я пометил проблемную область кода // WHAT CAN I DO HERE? NOTHING?
в приведенном ниже коде - что я могу сделать в этом случае в приложении запуска по умолчанию, как мое? Мне понадобятся значок, метка и намерение исполняемого файла (как я могу получить из более старых намерений ярлыков, как показано в примере кода).
Предположим, что я потерял в случае ярлыков, созданных с помощью нового ShortcutManager
, правильный? Эти ярлыки больше не могут использоваться никаким другим приложением, кроме запуска по умолчанию, это правда?
Код - вот что я делаю сейчас
// this function will be called after a shortcut is set up via a foreign app
// after the foreign app returns it's result to my app's activities onActivityResult function...
fun handleSetupShortcutResult(activity: Activity, requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == Activity.RESULT_OK) {
// user wants to create a shortcut inside my app
if (requestCode == RequestCodes.SHORTCUT_CREATE_REQUEST_CODE) {
// 1) we check if it is an old style shortcut
val intentShortcut = data?.extras?.get(Intent.EXTRA_SHORTCUT_INTENT) as Intent?
if (intentShortcut == null) {
// 2) alternatively we check if it is a new style shortcut created via ShortcutManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val pinItemRequest = data?.extras?.get(LauncherApps.EXTRA_PIN_ITEM_REQUEST) as LauncherApps.PinItemRequest?
if (pinItemRequest != null) {
// sadly, this can only be received by the default launcher
// val shortcutInfo = pinItemRequest.shortcutInfo
// WHAT CAN I DO HERE? NOTHING?
L.e { "pinItemRequest found!" }
return
}
}
}
if (intentShortcut == null) {
L.e { "IntentShortcut == null" }
return
}
// read data from old style shortcut
val icon = data!!.extras!!.get(Intent.EXTRA_SHORTCUT_ICON) as Bitmap?
val iconRes = data.extras!!.get(Intent.EXTRA_SHORTCUT_ICON_RESOURCE) as Intent.ShortcutIconResource?
val name = data.extras!!.getString(Intent.EXTRA_SHORTCUT_NAME)
// ... continue ...
}
}
}