Я делаю приложение, которое делает ярлык на главном экране для другого приложения, если оно установлено.Ярлык главного экрана для другого приложения
Это работает частично. На уровне API менее 23 он работает отлично. На android 6 он создает ярлык, но обходит Intent.EXTRA_SHORTCUT_NAME
и Intent.EXTRA_SHORTCUT_ICON_RESOURCE
и оставляет оригинальную иконку и имя, которые я не хочу использовать.
Вот пример кода, я использую:
ApplicationInfo selectedApp; //app that should be used for shortcut
Intent shortcutIntent = new Intent(getPackageManager().getLaunchIntentForPackage(selectedApp.packageName));
shortcutIntent.setAction(Intent.ACTION_MAIN);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "MyNewShortcut");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic1));
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
addIntent.putExtra("duplicate", false);
getApplicationContext().sendBroadcast(addIntent);
Manifest:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
Есть ли что-нибудь другое, что я должен делать на Android Зефир?
EDIT
Ok, это немного сбивает с толку. Мне удалось как-то заставить его работать.
Когда я добавляю эту строку:
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "asd");
Это создает ярлык на главном экране, но с именем, которое я поставил на addIntent
, а не "asd"
как на новой линии. Есть ли для этого логическое объяснение?
можно лучше, чтобы добавить разрешений во время выполнения также, если вы хотите использовать его в андроиде ** M ** –
Это разрешение нормального уровня, не опасно, так что doen't требуется запрос времени выполнения. Достаточно установить его в Manifest.xml – filipst