8.0+ 不能用之前的发送广播方法新建快捷方式,得用 ShortcutManager.
写代码:

        ShortcutManager shortcutManager = (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE);
      ...省略...
        ShortcutInfo info = new ShortcutInfo.Builder(context, id)
                .setIcon(...)
                        .setShortLabel(...)
                        .setIntent(launcherIntent)
                .build();
        if (shortcutManager.isRequestPinShortcutSupported()) {
            shortcutManager.requestPinShortcut(info, null);
        }else{
            //启动器不支持
        }

坑:

调用闪退

调试发现 launcherIntent 需要设置 action
改进:

launcherIntent.setAction(Intent.ACTION_VIEW);

闪退问题修复

无法重复新建快捷方式

看文档,得知 id 不能是一样的,否则当作已经添加过,不允许重复添加.
改进:
随机设置 id

有的启动器不支持

无解,等 Google填坑吧

photo_2018-06-20_20-56-51.jpg