Ярлыки на 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 ...     
        }
    }
}

0 ответов

Другие вопросы по тегам