Получить ярлыки без новых статических / динамических ярлыков - PullRequest
3 голосов
/ 28 марта 2019

Я получаю все возможные ярлыки из системы, как показано ниже:

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 в нем. Но это слишком поздно, я бы хотел удалить этот ярлык из приведенного выше списка, поскольку я знаю, что мое приложение не может запустить такой ярлык из-за отсутствия разрешений ...

...