更新记录
1.0.0(2025-07-11)
初始化
平台兼容性
uni-app
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | √ | - | - | - | - | 4.4 | - | - |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - | - | - | - |
uni-app x
Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
---|---|---|---|---|---|
- | - | 5.0 | - | - | - |
xtf-androidper
android 应用权限申请
插件测试使用方法
-
选择试用,绑定要试用的项目appid,
-
选择后下载到对应的本地项目,
-
按照文档 -》把插件引入项目(即 import {requestAndroidPermission, requestPermison, PermissionPara,openAppDetail } from "@/uni_modules/xtf-androidper" 需要先引入),
-
发布-》云打包-》选择制作基座-》打包等基座制作完成
-
运行 -》 运行到手机或模拟器-》运行到Androidapp基座-》选择使用自定义基座运行-》选择手机-》运行
-
若之前手机安装过基座需要先卸载之前的基座
uniappx
<template> <view> <button style="margin: 10rpx;" @click="onClick(0)" type="primary">申请位置权限</button> <button style="margin: 10rpx;" @click="onClick(1)" type="primary">申请相机权限</button> <button style="margin: 10rpx;" @click="onClick(2)" type="primary">申请麦克风权限</button> <button style="margin: 10rpx;" @click="onClick(3)" type="primary">申请电话权限</button> <button style="margin: 10rpx;" @click="onClick(4)" type="primary">申请存储权限</button> <button style="margin: 10rpx;" @click="onClick(5)" type="primary">申请通讯录权限</button> <button style="margin: 10rpx;" @click="onClick(6)" type="primary">申请日历权限</button> <button style="margin: 10rpx;" @click="onClick(7)" type="primary">申请传感器权限</button> <button style="margin: 10rpx;" @click="onClick(8)" type="primary">申请短信权限</button> <button style="margin: 10rpx;" @click="onClick(9)" type="primary">申请后台定位权限</button> <button style="margin: 10rpx;" @click="onClick(10)" type="primary">申请发送通知权限</button> <button style="margin: 10rpx;" @click="openDetail" type="primary">跳转应用详情</button> </view> </template> <script> import {requestAndroidPermission, requestPermison, PermissionPara,openAppDetail } from "@/uni_modules/xtf-androidper" export default { data() { return { title: 'Hello' } }, onLoad() { }, methods: { openDetail(){ openAppDetail(); }, onClick(id:number){ var title="权限申请说明"; var content=""; var perName=""; if(id==0){ perName="android.permission.ACCESS_FINE_LOCATION"; content="申请位置权限介绍"; }else if(id==1){ perName="android.permission.CAMERA"; content="申请相机权限介绍"; }else if(id==2){ perName="android.permission.RECORD_AUDIO"; content="申请麦克风权限介绍"; }else if(id==3){ perName="android.permission.READ_PHONE_STATE"; content="申请电话权限介绍"; }else if(id==4){ perName="android.permission.WRITE_EXTERNAL_STORAGE"; content="申请存贮权限介绍"; }else if(id==5){ perName="android.permission.WRITE_CONTACTS"; content="申请通信录权限介绍"; }else if(id==6){ perName="android.permission.WRITE_CALENDAR"; content="申请日历录权限介绍"; }else if(id==7){ perName="android.permission.BODY_SENSORS"; content="申请传感器权限介绍"; }else if(id==8){ content="申请短信录权限介绍"; perName="android.permission.READ_SMS"; }else if(id==9){ content="申请后台定位权限介绍"; perName="android.permission.ACCESS_BACKGROUND_LOCATION"; }else if(id==10){ content="申请发送通知权限介绍"; perName="android.permission.POST_NOTIFICATIONS"; } requestAndroidPermission({ tipsTitleText:title, tipsContentText:content, permissionName:perName, permissionStateCallback:function(res:number){ console.log(res); } } as PermissionPara); } } } </script>
uniapp
<template> <view> <button style="margin: 10rpx;" @click="onClick(0)" type="primary">申请位置权限</button> <button style="margin: 10rpx;" @click="onClick(1)" type="primary">申请相机权限</button> <button style="margin: 10rpx;" @click="onClick(2)" type="primary">申请麦克风权限</button> <button style="margin: 10rpx;" @click="onClick(3)" type="primary">申请电话权限</button> <button style="margin: 10rpx;" @click="onClick(4)" type="primary">申请存储权限</button> <button style="margin: 10rpx;" @click="onClick(5)" type="primary">申请通讯录权限</button> <button style="margin: 10rpx;" @click="onClick(6)" type="primary">申请日历权限</button> <button style="margin: 10rpx;" @click="onClick(7)" type="primary">申请传感器权限</button> <button style="margin: 10rpx;" @click="onClick(8)" type="primary">申请短信权限</button> <button style="margin: 10rpx;" @click="onClick(9)" type="primary">申请后台定位权限</button> <button style="margin: 10rpx;" @click="onClick(10)" type="primary">申请发送通知权限</button> <button style="margin: 10rpx;" @click="openDetail" type="primary">跳转应用详情</button> </view> </template> <script> import {requestAndroidPermission, requestPermison,openAppDetail } from "@/uni_modules/xtf-androidper" export default { data() { return { title: 'Hello' } }, onLoad() { }, methods: { openDetail(){ openAppDetail(); }, onClick(id){ var title="权限申请说明"; var content=""; var perName=""; if(id==0){ perName="android.permission.ACCESS_FINE_LOCATION"; content="申请位置权限介绍"; }else if(id==1){ perName="android.permission.CAMERA"; content="申请相机权限介绍"; }else if(id==2){ perName="android.permission.RECORD_AUDIO"; content="申请麦克风权限介绍"; }else if(id==3){ perName="android.permission.READ_PHONE_STATE"; content="申请电话权限介绍"; }else if(id==4){ perName="android.permission.WRITE_EXTERNAL_STORAGE"; content="申请存贮权限介绍"; }else if(id==5){ perName="android.permission.WRITE_CONTACTS"; content="申请通信录权限介绍"; }else if(id==6){ perName="android.permission.WRITE_CALENDAR"; content="申请日历录权限介绍"; }else if(id==7){ perName="android.permission.BODY_SENSORS"; content="申请传感器权限介绍"; }else if(id==8){ content="申请短信录权限介绍"; perName="android.permission.READ_SMS"; }else if(id==9){ content="申请后台定位权限介绍"; perName="android.permission.ACCESS_BACKGROUND_LOCATION"; }else if(id==10){ content="申请发送通知权限介绍"; perName="android.permission.POST_NOTIFICATIONS"; } requestAndroidPermission({ tipsTitleText:title, tipsContentText:content, permissionName:perName, permissionStateCallback:function(res){ console.log(res); } }); } } } </script>
api 介绍
判断是否有权限
var have=isHavePermision("android.permission.CAMERA"");// 判断是否有相机权限
判断用户是否已经明确拒绝权限
var have=shouldShowRequestPermissionRationale("android.permission.CAMERA"");// 判断用户是否已经明确拒绝权限 true 表示已经拒绝
申请权限
requestAndroidPermission
uniapp
requestAndroidPermission({
tipsTitleText:title,
tipsContentText:content,
permissionName:perName,
permissionStateCallback:function(res){
console.log(res);
}
});
uniappx
requestAndroidPermission({
tipsTitleText:title,
tipsContentText:content,
permissionName:perName,
permissionStateCallback:function(res:number){
console.log(res);
}
} as PermissionPara);
参数介绍
export type PermissionPara = {
showTips?:boolean,// 申请权限时 是否显示权限介绍
tipsContentText:string,// 权限内容介绍
tipsTitleText:string, // 权限标题介绍 空则不显示
bgColor?:string, //弹框背景颜色
topMargin?:number,//弹框距离顶部的距离
leftRightMarign?:number,//弹框左右间距
innerPadding?:number,// 弹框内容间距
radius?:number,//弹框背景圆角
showTime?:number,//弹框显示时间 默认一直显示 如5000代表显示5秒
tipsTitleTextColor?:string, // 弹框标题的颜色 如 #000000
titleContentMarign?:number // 弹框内标题与内容的间距 如20
tipsContentTextColor?:string,// 弹框内容文字颜色 如 #000000
tipsContentFontSize?:number,// 弹框内容文字大小
tipsTitleFontSize?:number,// 弹框标题文字大小
permissionName?:string, // 申请权限的名称
permissionStateCallback?:(b:number)=>void,// 权限回调 0 有权限 1 拒绝 2 明确拒绝不在提醒
}
常见权限清单
下方权限请选择需要的注册到mainfest.json
<!--相机-->
<uses-permission android:name="android.permission.CAMERA" />
<!--悬浮窗-->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<!--定位权限-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<!--传感器-->
<uses-permission android:name="android.permission.BODY_SENSORS" />
<uses-permission android:name="android.permission.BODY_SENSORS_BACKGROUND" />
<!--身体活动-->
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
<!--蓝牙权限-->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<!--图片地理信息-->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!--媒体文件读取权限(不适配分区存储)-->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<!--媒体文件读取权限(适配分区存储)-->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
<!--安装包-->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!--通知权限-->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.NOTIFICATION_SERVICE" />
<!--勿扰权限-->
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
<!--使用统计权限-->
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
<!--闹钟提醒权限-->
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<!--忽略电池优化权限-->
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />