Я получаю все возможные ярлыки из системы, как показано ниже:
val pm = context.getPackageManager()
val shortcutsIntent = Intent(Intent.ACTION_CREATE_SHORTCUT)
val ril = pm.queryIntentActivities(shortcutsIntent, 0)
// I progress this data and show my users a custom dialog with apps
// and possible shortcuts and then will start the shortcut setup with ACTION_CREATE_SHORTCUT intent
Проблема здесь в том, что на android O или выше, например, выше, например, также возвращает новые статические ярлыки - для которых, насколько я знаю, приложение должно быть средством запуска по умолчанию. Можно ли как-то отфильтровать их?
У меня есть приложение, похожее на боковую панель, и я могу поддерживать только обычные ярлыки и не могу поддерживать более новые статические / динамические ярлыки из-за отсутствия разрешения ...
Пример
Gmail, например предлагает ярлыки для ярлыков - я получил этот возможный ярлык выше. Но если я начну устанавливать ярлык, как показано ниже
val i = Intent(Intent.ACTION_CREATE_SHORTCUT)
i.addCategory(Intent.CATEGORY_DEFAULT)
i.component = ComponentName(packageName, activityName)
startActivityForResult(i, RequestCodes.SHORTCUT_CREATE_REQUEST_CODE)
и дождаться результата, я НЕ получаю Intent
с Intent.EXTRA_SHORTCUT_INTENT
(и все остальные, такие как Intent.EXTRA_SHORTCUT_ICON
, ...) в нем, но один с LauncherApps.EXTRA_PIN_ITEM_REQUEST
в нем. Но это слишком поздно, я бы хотел удалить этот ярлык из приведенного выше списка, поскольку я знаю, что мое приложение не может запустить такой ярлык из-за отсутствия разрешений ...