Создать ярлык приложения на домашнем экране в Android Oreo(8.0)
Я создал приложение форм Xamarin. У меня есть требование, при котором мне нужно создать ярлык приложения на главном экране, когда приложение установлено. Я смог создать его на устройствах с версией Android ниже 8.0, используя следующий код:
private void AddShortcut()
{
Intent shortcut = new Intent(Intent.ActionMain);
shortcut.SetClassName(ApplicationInfo.PackageName, this.LocalClassName);
Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
intent.PutExtra("android.intent.extra.shortcut.NAME", this.Title);//Calc app name as last portion of full package name
intent.PutExtra("android.intent.extra.shortcut.INTENT", shortcut);
intent.PutExtra("duplicate", false);
intent.PutExtra("android.intent.extra.shortcut.ICON_RESOURCE", Intent.ShortcutIconResource.FromContext(this, Resource.Drawable.icon2));
SendBroadcast(intent);
}
Однако с версией Android 8.0 тот же код не работает. После исследования сети я наткнулся на то, что называется Pinned Shortcuts. Я реализовал это, используя следующий код:
private void AddRequestPinShortcut()
{
var manager = GetSystemService(Context.ShortcutService) as ShortcutManager;
var info = new ShortcutInfo.Builder(this, "shortcut-id")
.SetShortLabel("Demo")
.SetLongLabel("Demo")
.SetIcon(Icon.CreateWithResource(this, Resource.Drawable.icon2))
.SetIntent(Intent)
.Build();
manager.RequestPinShortcut(info, null);
}
Проблема в том, что он вызывает диалоговое окно разрешений и не отображается на переднем плане приложения. Я должен нажать кнопку возврата устройства, чтобы открыть диалоговое окно разрешений.
Можно ли как-нибудь создать нормальные ярлыки приложений (а не закрепленные ярлыки) в Android 8.0?
Как отобразить диалоговое окно разрешения, которое появляется для закрепленного ярлыка на переднем плане? Что-то я делаю здесь не так?