当前位置: 首页 > news >正文

【HbuilderX】 uniapp实现 android申请权限 和 退出app返回桌面

目录

 android申请权限:

监听用户是否开启权限或关闭权限:

退出app返回桌面:


 android申请权限:
 

首先在 manifest.json 内添加你所需要用到权限


添加权限插件

permission.js · 一次就好1/权限插件 - Gitee.comicon-default.png?t=N7T8https://gitee.com/just-once-1/permission-plugin/blob/master/permission.js

App.vue 内引入该插件 

import permision from "你的插件路径"

App.vue onShow 钩子内 使用  permision.requestAndroidPermission 调用申请该权限

permision.requestAndroidPermission("android.permission.RECORD_AUDIO") 

permision.requestAndroidPermission("android.permission.你的权限名")   ,
注意你的权限名 必须一致和 manifest.json 内配置的权限名一致

监听用户是否开启权限或关闭权限:

permission.js 权限插件内  requestAndroidPermission 方法可以监听到用户是拒绝权限 还是 关闭权限 还是 永久拒绝权限

function requestAndroidPermission(permissionID) {return new Promise((resolve, reject) => {plus.android.requestPermissions([permissionID], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装function (resultObj) {var result = 0;for (var i = 0; i < resultObj.granted.length; i++) {var grantedPermission = resultObj.granted[i];console.log('已获取的权限:' + grantedPermission);result = 1}for (var i = 0; i < resultObj.deniedPresent.length; i++) {var deniedPresentPermission = resultObj.deniedPresent[i];console.log('拒绝本次申请的权限:' + deniedPresentPermission);if (("android.permission.READ_PHONE_STATE" == deniedPresentPermission)) {console.log(`拒绝了电话权限`)plus.runtime.quit()}result = 0}for (var i = 0; i < resultObj.deniedAlways.length; i++) {var deniedAlwaysPermission = resultObj.deniedAlways[i];console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);result = -1}resolve(result);// 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限// if (result != 1) {// gotoAppPermissionSetting()// }},function (error) {console.log('申请权限错误:' + error.code + " = " + error.message);resolve({code: error.code,message: error.message});});});
}

退出app返回桌面:

安卓端退出应用程序:

 plus.runtime.quit();

苹果端退出应用程序:

  const threadClass = plus.ios.importClass("NSThread");const mainThread = plus.ios.invoke(threadClass, "mainThread");plus.ios.invoke(mainThread, "exit");

http://www.lryc.cn/news/311045.html

相关文章:

  • 计算机网络之传输层 + 应用层
  • 五、软考-系统架构设计师笔记-信息安全技术基础知识
  • vue3+uniapp在微信小程序实现一个2048小游戏
  • 常见的浏览器跨域解决方法
  • 飞桨模型转ONNX模型教程
  • vue使用swiper(轮播图)-真实项目使用
  • C++ 创建并初始化对象
  • 大数据可视化python01
  • Java底层自学大纲_分布式篇
  • Thread多线程(创建,方法,安全,通信,线程池,并发,并行,线程的生命周期)【全详解】
  • 自定义View中的ListView和ScrollView嵌套的问题
  • 支持向量机 SVM | 线性可分:硬间隔模型公式推导
  • 【Unity实战】UGUI和Z轴排序那点事儿
  • Vue/React 前端高频面试
  • [技巧]Arcgis之图斑四至范围批量计算
  • C/C++工程师面试题(STL篇)
  • Effective Programming 学习笔记
  • 【MGR】MySQL Group Replication 背景
  • 300分钟吃透分布式缓存-17讲:如何理解、选择并使用Redis的核心数据类型?
  • 思科网络设备监控
  • 深入剖析k8s-控制器思想
  • go并发模式之----使用时顺序模式
  • [动态规划]---part1
  • java 关于 Object 类中的 wait 和 notify 方法。(生产者和消费者模式!)
  • YOLOv8姿态估计实战:训练自己的数据集
  • 【海贼王的数据航海:利用数据结构成为数据海洋的霸主】链表—双向链表
  • 做测试还是测试开发,选职业要慎重!
  • Java面试题总结200道(二)
  • 面试数据库篇(mysql)- 03MYSQL支持的存储引擎有哪些, 有什么区别
  • MySQL深入——25