Я создал приложение форм 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?
Как отобразить диалоговое окно разрешений, которое отображается для закрепленного ярлыка на переднем плане? Есть ли что-то, что я здесь делаю неправильно?