1. 程式人生 > >安卓應用建立快捷方式的最新操作(相容安卓8.0)

安卓應用建立快捷方式的最新操作(相容安卓8.0)

在安卓8.0以前,如果需要給安卓APP建立快捷方式,需要使用到廣播機制。

而在最新的安卓8.0中,舊的廣播建立快捷方式方式是已經過時甚至失效了的。

而新的快捷方式使用了一個新的類:ShortcutManager,谷歌在拋棄舊機制的同時,在ShortcutManager上加了個相容:ShortcutManagerCompat,使用它就能分分鐘搞定原本繁瑣的快捷方式建立了~

那麼不多廢話,直接上工具類(複製貼上即可使用~):

首先新增許可權:

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

 之後呼叫方法即可:

public class ShortcutUtils {
    //使用當前APP的啟動圖示建立快捷方式
    public static void installShortCut(Context context, String shortcutID, String name, Intent intent) {
        if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) {
            intent.setAction(Intent.ACTION_MAIN);
            //新的建立機制,判斷唯一性的方法更改為ShortcutID了,預設不允許重複建立ID相同的快捷方式
            ShortcutInfoCompat pinShortcutInfo =
                    new ShortcutInfoCompat.Builder(context, shortcutID).setShortLabel(name).setIntent(intent).build();
            Intent pinnedShortcutCallbackIntent =
                    ShortcutManagerCompat.createShortcutResultIntent(context, pinShortcutInfo);

            PendingIntent successCallback = PendingIntent.getBroadcast(context, 0,
                    pinnedShortcutCallbackIntent, 0);

            ShortcutManagerCompat.requestPinShortcut(context, pinShortcutInfo,
                    successCallback.getIntentSender());
        }
    }

    //使用自定義圖示建立快捷方式
    public static void installShortCut(Context context, String shortcutID, String name, IconCompat iconCompat, Intent intent) {
        if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) {
            intent.setAction(Intent.ACTION_MAIN);
            ShortcutInfoCompat pinShortcutInfo =
                    new ShortcutInfoCompat.Builder(context, shortcutID).setShortLabel(name).setIntent(intent).setIcon(iconCompat).build();
            Intent pinnedShortcutCallbackIntent =
                    ShortcutManagerCompat.createShortcutResultIntent(context, pinShortcutInfo);

            PendingIntent successCallback = PendingIntent.getBroadcast(context, 0,
                    pinnedShortcutCallbackIntent, 0);

            ShortcutManagerCompat.requestPinShortcut(context, pinShortcutInfo,
                    successCallback.getIntentSender());
        }
    }
}

最後,如果您覺得這個工具類為您省下了大量時間的話,不妨給博主發個紅包吧,一分也是愛呀~