Создать ярлык приложения на домашнем экране в Android Oreo (8.0) - PullRequest
0 голосов
/ 24 сентября 2018

Я создал приложение форм 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?

Как отобразить диалоговое окно разрешений, которое отображается для закрепленного ярлыка на переднем плане? Есть ли что-то, что я здесь делаю неправильно?

...