支持android平臺全局監聽權限的申請。當申請權限時,會在頁面頂部顯示申請權限的目的。主要解決上架華為應用市場審核要求:APP在調用終端權限時,應同步告知用戶申請該權限的目的。
因為如果不提示,你上架應用市場會被打打回來
Tips
插件需要云打包生成自定義基座才會生效。
如果在其他插件中跳轉到單獨的activity并在此activity中申請權限,當前插件將無法展示。這種情況下可以在插件跳轉之前主動申請權限。
注冊權限監聽事件
registerRequestPermissionTipsListener(listener)
取消注冊權限監聽事件
unregisterRequestPermissionTipsListener(listener)
RequestPermissionTipsListener的屬性值
名稱?? ?類型?? ?描述?? ?必填
onRequest?? ?(permissions:Array)=>void?? ?申請系統權限回調,permissions為觸發權限申請的所有權限?? ?否
onConfirm?? ?(permissions:Array)=>void?? ?彈出系統權限授權框回調,permissions為觸發彈出權限授權框的所有權限?? ?否
onComplete?? ?(permissions:UTSJSONObject)=>void?? ?權限申請完成回調,permissions包括權限及權限的狀態。grant為權限已獲取,denied為權限已拒絕?? ?否
setRequestPermissionTips(UTSJSONObject)
設置權限監聽的說明。支持針對權限設置具體的說明。
參考:{"android.permission.CAMERA":"<p>相機權限申請說明</p>"}
安卓權限列表可參考谷歌官方文檔。
權限申請說明基于原生TextView實現,可以實現加載html內容,支持的標簽及屬性可參考:
<b> 或 <strong>:加粗文本。
<i> 或 <em>:斜體文本。
<u>:下劃線文本。
<sup>:上標文本。
<sub>:下標文本。
<tt>:等寬字體文本。
<big>:放大字體。
<small>:縮小字體。
<strike> 或 <s> 或 <del>:帶有刪除線的文本。
<p>:段落。
<div>:塊級容器。
<h1>,<h2>,<h3>,<h4>,<h5>,<h6>:區域標題元素。
<ul>, <ol>, <li>:無序列表和有序列表。
<br>:換行。
<font color="..."> 和 <font size="...">:設置文本顏色和大小。
示例
<script>import {registerRequestPermissionTipsListener,unregisterRequestPermissionTipsListener,setRequestPermissionTips} from "@/uni_modules/uni-registerRequestPermissionTips"var PermissionTips = {"android.permission.CAMERA": "<h4 style=\"font-size:40px;\">正在讀取通訊錄權限</h4><font color=#cccccc>通訊錄權限不會獲取任何信息,請注意</font>","android.permission.READ_PHONE_STATE": "<h4 style=\"font-size:40px;\">正在讀取網絡狀態權限</h4><font color=#cccccc>通訊錄權限不會獲取任何信息,請注意通訊錄權限不會獲取任何信息,請注意通訊錄權限不會獲取任何信息,請注意</font>"}export default {onLaunch: function() {var brand = uni.getSystemInfoSync().deviceBrandsetRequestPermissionTips(PermissionTips)registerRequestPermissionTipsListener({onRequest: (e) => {console.log(e)},onConfirm: (e) => {console.log(e)},onComplete: (e) => {// 華為手機在權限禁止之后,再次申請權限不會出現權限申請框。此時應該引導用戶去系統設置開啟此權限,不應該頻繁申請。if (brand.toLowerCase() == "huawei") {var tips = {}var hasDeniedPermission = falsefor (var k in PermissionTips) {if (e[k] != "denied") {tips[k] = PermissionTips[k]} else {hasDeniedPermission = true}}setRequestPermissionTips(tips) // 更新彈框提醒,防止華為手機不出現權限申請框時權限提醒框閃爍的情況if (hasDeniedPermission)uni.showModal({content: "權限已經被拒絕,請前往設置中開啟"})}}})},onShow: function() {console.log('App Show')},onHide: function() {console.log('App Hide')},onExit: function() {unregisterRequestPermissionTipsListener(null)}}
</script>