一、現象
1、我們發現您的應用提示獲取“存儲”等敏感權限,用戶不同意時強制退出應用。
二、解決
HBuilderX2.5.0+開始支持配置應用啟動時申請獲取手機存儲權限,支持以下三種策略
none 應用啟動時不申請
once 應用第一次啟動時申請,用戶可以拒絕
always 應用每次啟動都申請,並且用戶必須允許,用戶拒絕時會彈出以下提示框引導用戶重新允許
1、雲打包
打開manifest.json文件,切換到“源碼視圖”項
uni-app項目
在"app-plus" -> "distribute" -> "android" 節點下添加 permissionExternalStorage 節點
5+ App項目
在 "plus" -> "distribute" -> "google" 節點下添加 permissionExternalStorage 節點
(1)、存儲權限提示語配置
"permissionExternalStorage" : {
"request" : "once",
"prompt" : "應用保存運行狀態等信息,需要獲取讀寫手機存儲(系統提示為訪問設備上的照片、媒體內容和文件)權限,請允許。"
}
(2)、讀取手機狀態權限配置
"permissionPhoneState" : {
"request" : "once",
"prompt" : "為保證您正常、安全地使用,需要獲取設備識別碼(部分手機提示為獲取手機號碼)使用權限,請允許。"
},
如:
2、離線打包
== 提示語配置: 在主項目的strings.xml中添加如下字段。strings.xml位於 項目目錄/src/main/res/values下,如果文件或文件夾不存在,直接新建即可。
(1)、存儲權限提示語配置
<resources>
<string name="dcloud_permission_write_external_storage_message">應用保存運行狀態等信息,需要獲取讀寫手機存儲(系統提示為訪問設備上的照片、媒體內容和文件)權限,請允許。</string>
</resources>
(2)、讀取手機狀態權限配置
<resources>
<string name="dcloud_permission_read_phone_state_message">為保證您正常、安全地使用,需要獲取設備識別碼(部分手機提示為獲取手機號碼)使用權限,請允許。</string>
</resources>
== 彈窗配置: 在androidManifest.xml的application節點下添加如下字段。
(2)、存儲權限彈窗配置
<application>
<meta-data android:name="DCLOUD_WRITE_EXTERNAL_STORAGE" android:value="once"/>
</application>
(2)、讀取手機狀態彈窗配置
<application>
<meta-data android:name="DCLOUD_READ_PHONE_STATE" android:value="once"/>
</application>
三、總結
官方鏈接: https://ask.dcloud.net.cn/article/36549