实现思路是使用plus对象、HTML5+可能存在兼容性!
uni-app App 端内置 HTML5+ 引擎、so直接在uniapp使用plus对象即可 uni-app使用plus注意事项
先上图、原始应用程序图标(左侧)快捷方式图标(右侧)
代码示例、创建快捷方式
如果要创建桌面快捷方式,需添加以下权限:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>"
<template>
<view class="su-section">
<button class="su-button" @click="createClock">
<text class="addbtn-text">创建打卡快捷</text>
</button>
</view>
</template>
<script>
export default {
data() {
return {};
},
methods: {
//点击创建快捷方式
createClock() {
const params = {
name: '打卡',
icon: '/static/logo512.png',
extra: {
path: '/pages/app/punch/clock', // 应用地址
title: '打卡快捷方式'
},
toast: '',
force: false
};
this.handleHasShortcut(params);
},
/* 查询是否存在快捷方式 */
handleHasShortcut(options) {
plus.navigator.hasShortcut(options, (e) => {
const result = e.result;
if (result === 'existing') {
uni.$as.toast(options?.name + ' 快捷方式已存在');
return false;
}
if (result === 'unsupported') {
uni.$as.toast('该设备不支持创建桌面快捷方式');
return false;
}
// 可通过eresult获取结果:
// "existing":快捷方式已存在;
// "none":快捷方式不存在(支持创建);
// "unsupported":不支持创建桌面快捷方式;
// "unknown":不确定快捷方式是否存在。
console.log('查询结果-hasShortcut:' + e.result);
this.handleCreateShortcu(options);
});
},
/* 创建快捷方式 */
handleCreateShortcu(options) {
plus.navigator.createShortcut(
options,
function (e) {
console.log('查询结果-success:' + e.result);
},
function (e) {
console.log('查询结果-error:' + e.result);
}
);
}
}
};
</script>
创建成功后、在App.vue里面接收即可
代码示例
/**
* 初始化
* @param {void}
*/
initShortcut(that) {
if (!uni.$as.utils.isApp()) {
return false;
}
const main = plus.android.runtimeMainActivity();
const Intent = plus.android.importClass('android.content.Intent');
const intent = main.getIntent();
const path = intent.getStringExtra('path');
if (path === null) {
return;
}
that.$nextTick(() => {
uni.navigateTo({
url: path,
success() {
// 快捷方式跳转成功的回调逻辑
console.log('快捷方式跳转成功');
},
fail(err) {
// 快捷方式跳转失败的回调逻辑
console.log('快捷方式跳转失败', err);
}
});
});
intent.removeExtra('path');
},
这样就大工搞成了