Android app版本的 uni-app 项目实现shortcut。
ios:uniapp ios项目支持长按app 3D Touch快捷菜单项
基于uniapp插件市场 的shortcut插件实现。链接
百度搜索uniapp 安卓项目如何实现shortcut,看到有人给了两个方法:1.插件、2.NativeJS实现。
由于各方面原因(本人较菜),选择使用插件实现,感谢分享这个插件的大佬!!!
需要跳转页面,只需要按照插件说明使用插件:
插件下的评论:
我要实现的逻辑不需要跳转页面,只是唤醒扫一扫功能。
所以根据path判断是否为快捷方式打开软件,并执行相应逻辑。
App.vue文件:
onShow: function() {
// #ifdef APP-PLUS
//长按快捷方式扫一扫 开始
this.main = plus.android.runtimeMainActivity();
this.Shortcut();
// const main = plus.android.runtimeMainActivity();
const Intent = plus.android.importClass("android.content.Intent");
const intent = this.main.getIntent();
let path = intent.getStringExtra("path");// list 里面的 path
//根据 path路径判断是否由快捷方式开启app 不进行跳转
if(path === null||!this.$store.state.hasLogin) return;//path为null或者未登录,直接return
//使用 $nextTick 延时跳转,避免在 tabBar 页面出现 BUG
this.$nextTick(function(){
//快捷方式执行逻辑(跳转页面的话,只需要在此处写上跳转逻辑)
})
//移除跳转路径,避免后续打开默认为快捷方式唤醒
intent.removeExtra("path");
//长按快捷方式扫一扫 结束
// #endif
},
methods:{
Shortcut() { //快捷方式插件
// js h5+ 模式创建
let res = addShortcuts(this.main, [{
id: 'sweep', //必填,不能重复
icon: plus.io.convertLocalFileSystemURL( '/static/img/sweep.png' ), //本地图片,要使用平台绝对路径
path: '/pageSub/sweep', //选填,跳转的页面路径 当前值为不存在的页面路径,不需跳转
shortLabel: '', //选填
title: '扫一扫' //必填
}
]);
},
}
效果: