XZH-Shortcut - 更新日志

2.0.1(2021-01-12)

妈呀!又挖了一个坑。js h5+ 模式的图标设置失败,我居然没发现。我真是个挖坑小能手,我已从新上传了

如果不想下载了,可以更具下面代码你们自己替换下吧!

打开 shortcuts.js替换成

const Build = plus.android.importClass("android.os.Build");

function addShortcuts(main, shortcuts) {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
        const shortcutManager = main.getSystemService(plus.android.getAttribute( main, 'SHORTCUT_SERVICE' ));

        try {
            const shortcutInfoList = plus.android.newObject('java.util.ArrayList');
            shortcuts.forEach((item) => {
                const intent = plus.android.newObject('android.content.Intent', 'io.dcloud.PandoraEntry');
                plus.android.invoke(intent, 'setClassName', main, "io.dcloud.PandoraEntryActivity");
                plus.android.invoke(intent, 'setFlags', plus.android.getAttribute(intent, 'FLAG_ACTIVITY_NEW_TASK'));
                plus.android.invoke(intent, 'putExtra', 'path', item.path);

                const shortcut = plus.android.newObject( "android.content.pm.ShortcutInfo$Builder", main, item.id);
                const bitmap = plus.android.invoke('android.graphics.BitmapFactory', 'decodeFile', item.icon);
                const icon = plus.android.invoke('android.graphics.drawable.Icon', 'createWithBitmap', bitmap);

                plus.android.invoke(shortcut, 'setShortLabel', item.shortLabel || item.title);
                plus.android.invoke(shortcut, 'setLongLabel', item.title);
                plus.android.invoke(shortcut, 'setIntent', intent);
                plus.android.invoke(shortcut, 'setIcon', icon);

                plus.android.invoke(shortcutInfoList, 'add', plus.android.invoke(shortcut, 'build'));
            })
            return plus.android.invoke(shortcutManager, 'setDynamicShortcuts', shortcutInfoList);
        } catch (e) {
            console.log(e);
            return false;
        }
    }
    return false;
}

function removeAll(main) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
        const shortcutManager = main.getSystemService(plus.android.getAttribute( main, 'SHORTCUT_SERVICE' ));
        return plus.android.invoke(shortcutManager, 'removeAllDynamicShortcuts');
    }
}

export { addShortcuts, removeAll };

再把 icon 修改的路径格式为 plus.io.convertLocalFileSystemURL( '/static/logo.png' ) 这种格式

let res = addShortcuts(this.main, [{
                    id: 'test',
                    // 原来是这样的,现在要替换成下面那种格式 
                    // icon: `file://${plus.io.convertLocalFileSystemURL( '/static/logo.png' )}`,
                    // 这个才是正确的格式 plus.io.convertLocalFileSystemURL( '/static/logo.png' )
                    icon: plus.io.convertLocalFileSystemURL( '/static/logo.png' ),
                    path: 'pages/test/test',
                    shortLabel: '',
                    title: 'test页'
                }]);

2.0.0(2021-01-12)

增加使用 js h5+ 创建模式,这样就可以不用使用原生插件了。

使用 js h5+ 模式的插件包体积可以小一点,还不用打自定义基座更方便

1.0.1(2020-11-17)

修复页面跳转的 BUG

1.0.0(2020-11-11)

1.0.0

创建 Shortcuts 移除 Shortcuts