正如您從我的清單中看到的,我已經添加了權限,我錯過了什麼?Android 6.0權限拒絕:需要權限android.permission.WRITE_SETTINGS
<uses-permission-sdk-m android:name="android.permission.WRITE_SETTINGS" />
正如您從我的清單中看到的,我已經添加了權限,我錯過了什麼?Android 6.0權限拒絕:需要權限android.permission.WRITE_SETTINGS
<uses-permission-sdk-m android:name="android.permission.WRITE_SETTINGS" />
事實證明,你需要使用不同的機制在Android的6 requestPermissions
不工作被授予WRITE_SETTINGS
,但CommonsGuy提供了這裏解決方法:https://stackoverflow.com/a/32083622/238753
這是一種特殊情況: permision級別:簽名,
如果應用程序的目標API級別爲23或更高,則應用程序用戶必須通過權限管理屏幕嚮應用程序顯式授予此權限。
該應用程序通過發送具有操作ACTION_MANAGE_WRITE_SETTINGS的意圖來請求用戶的批准。
該應用程序可以通過調用Settings.System.canWrite()來檢查它是否具有該授權。
在API 23或更高版本,用戶必須手動授權使用該權限,則可以通過calling-檢查「Settings.System.canWrite」下面是該實施: -
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (Settings.System.canWrite(context)) {
// Do stuff here
}
else {
Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + getActivity().getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.System.canWrite(getApplicationContext())) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 200);
}
}
這奇蹟般有效。
https://developer.android.com/preview/features/runtime-permissions.html – Budius
我已經讀過它了。requestPermissions()方法不起作用,爲什麼? – Dobin
也許你應該檢查,然後:http://stackoverflow.com/help/on-topic和該http://stackoverflow.com/help/dont-ask – Budius