[英]Requested Android permissions not showing in app permission settings
我正在開發一個需要INTERNET
, WRITE_EXTERNAL_STORAGE
, ACCESS_WIFI_STATE
和CHANGE_WIFI_MULTICAST_STATE
權限的Cordova應用程序。 我已經在清單中請求了這些權限
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
INTERNET
, ACCESS_WIFI_STATE
和CHANGE_WIFI_MULTICAST_STATE
被視為正常權限,根據文檔 ,Android將在安裝時自動接受它們,用戶無法撤消它們。
現在在Cordova創建的MainActivity
,我在if
塊中添加了此代碼,該塊檢查以確保我們在6.0或更高版本:
if (checkSelfPermission(Manifest.permission.ACCESS_WIFI_STATE) == PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.CHANGE_WIFI_MULTICAST_STATE) == PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "has permission");
}
else {
Log.d(TAG, "no permission");
requestPermissions(new String[] { Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.CHANGE_WIFI_MULTICAST_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0);
}
問題是,在運行5.1.1的Android設備上,這有效,當我轉到應用程序的權限設置時,我會看到所有4個權限。 但是在運行7.0和7.1.1的設備上,我得到一個對話框,要求批准WRITE_EXTERNAL_STORAGE
和所有其他權限,因為它們是正常的,不會被要求批准。 它們會自動獲得批准。 問題是即使我有權限,在較新的設備上我也無法做與這些權限相關的事情,如果我轉到應用程序設置獲取權限,我看到的是權限存儲已授予。 沒有INTERNET
, ACCESS_WIFI_STATE
或CHANGE_WIFI_MULTICAST_STATE
。 我沒有在6.0設備上專門測試過,但我想我會遇到同樣的問題。
為什么權限沒有顯示在權限設置中,為什么我無法執行需要這些權限的操作,即使Android說我有權限?
您鏈接到的文檔包含以下語句:
“系統不會提示用戶授予正常權限,用戶也無法撤消這些權限。”
因此,除了WRITE_EXTERNAL_STORAGE
之外的所有權限將始終被授予。 您要求的唯一權限是可以撤銷的權限。
為什么權限未顯示在權限設置中
好吧,根據Android版本,他們可能有點難找。 例如,在運行android 7.0的模擬器上,我找到了Apps - > MyApp - > Permissions下的所有權限列表,然后單擊溢出菜單中的“所有權限”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.