uniapp上啦加载(uni-app设置开机自启动)
导读:本文参照设备为 HUAWEI MatePad Pro,设备不同其对应的设置项可能也有所不同...
本文参照设备为 HUAWEI MatePad Pro,设备不同其对应的设置项可能也有所不同
1. 为何需要自启动
为实现体成分检测分析仪开机默认打开软件的需求 为实现APP最小化自动唤醒的需求2.功能描述
实现APP的开机自启 ,以及自启动需要权限的申请
3.使用流程
购买插件 ,选择该插件绑定的项目 。插件地址:开机自启 解锁唤醒屏幕 - DCloud 插件市场 在项目中找到manifest的app原生插件配置中勾选模块 在代码中引用插件,调用插件功能 。 打包自定义基座 ,选择插件 ,得到自定义基座 ,然后运行时选择自定义基座 ,进行log输出测试。**注意事项:**使用HBuilderX2.7.14以下版本,如果同一插件且同一APPID下购买并绑定了多个包名 ,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json→"App原生插件配置"→"云端插件"列表中删除该插件重新选择
4.权限设置
设置电池优化:设置→电池→对应软件→启动管理→自动管理切换成关闭
设置自启动:设置→电池→对应软件→启动管理→手动管理全部打开
设置后台弹窗:设置→应用和服务→权限管理→应用→对应软件→后台弹窗切换为允许
设置悬浮窗:设置→应用和服务→权限管理→应用→对应软件→悬浮窗切换为允许
5.示例代码
在App.vue文件中写入:
const meaAppModule = uni.requireNativePlugin("MeaApp-System");// 引入后台唤醒至前台插件;仅支持安卓 //当uni-app 初始化完成时触发(全局只触发一次) onLaunch: function() { /********设置开机自动启动开始********/ this.requestPermission(); let pwi = uni.requireNativePlugin(lich-PowerOnAutoStart); pwi.isIgnoringBatteryOptimizations((d)=>{//判断忽略电池优化是否设置 if(d){ pwi.canDrawOverlays((d1)=>{//判断是否允许悬浮窗 if(!d1){ pwi.toastMakeText("请允悬浮窗弹出");//消息提示可自行替换 } pwi.setCanDrawOverlays();//打开浮窗弹设置页面 }) }else{ pwi.toastMakeText("请忽略电源管理选项"); pwi.setIgnoringBatteryOptimizations();//打开忽略电池优化设置页面 } }) pwi.setPowerOnAutoStart(true); pwi.isPowerOnAutoStart((isAutoStart)=>{ console.log("isAutoStart------>",isAutoStart); }) /********设置开机自动启动结束********/ }, //当uni-app 隐藏时触发 onHide() { setTimeout(()=>{ console.log("start to show app"); //从后台唤醒至前台 meaAppModule.setTopApp(); console.log("end to show app"); },1000); }, methods: { // 请求权限 requestPermission() { return new Promise((resolve, reject) => { console.log("开始设置权限"); plus.android.requestPermissions( [ "android.permission.RECEIVE_BOOT_COMPLETED", //开机自启动服务 "android.permission.SYSTEM_ALERT_WINDOW", //悬浮窗能显示在其他app上方 "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", //忽略电池优化 "android.permission.WAKE_LOCK", //休眠唤醒 "android.permission.DISABLE_KEYGUARD", //允许程序禁用键盘锁 ], function (resultObj) { for (var i = 0; i < resultObj.granted.length; i++) { var grantedPermission = resultObj.granted[i]; console.log(已获取的权限: + grantedPermission); } for (var i = 0; i < resultObj.deniedPresent.length; i++) { var deniedPresentPermission = resultObj.deniedPresent[i]; console.log(拒绝本次申请的权限: + deniedPresentPermission); } for (var i = 0; i < resultObj.deniedAlways.length; i++) { var deniedAlwaysPermission = resultObj.deniedAlways[i]; console.log(永久拒绝申请的权限: + deniedAlwaysPermission); } // 若所需权限被永久拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限 if (resultObj.deniedAlways.length > 0) { // 若授权失败 ,请在设置页面手动调整 reject("授权失败:" + JSON.stringify(resultObj.deniedAlways)); var Intent = plus.android.importClass("android.content.Intent"); var Settings = plus.android.importClass("android.provider.Settings"); var Uri = plus.android.importClass("android.net.Uri"); var mainActivity = plus.android.runtimeMainActivity(); var intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); var uri = Uri.fromParts("package", mainActivity.getPackageName(), null); intent.setData(uri); mainActivity.startActivity(intent); } resolve("授权完毕"); }, function (error) { console.log(申请权限错误: + error.code + " = " + error.message); }); }); } }
声明:本站所有文章 ,如无特殊说明或标注 ,均为本站原创发布 。任何个人或组织 ,在未征得本站同意时,禁止复制 、盗用 、采集、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益 ,可联系我们进行处理 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!