Android的6棉花糖:对一些特定的权限请求即时与未显示的UI否认 [英] Android 6 Marshmallow: requests for some specific permissions are instantly denied with no ui shown
问题描述
使用官方AVD转。 3
Using official AVD rev. 3
调用此:
ActivityCompat.requestPermissions(activity, new String[]{"android.permission.USE_CREDENTIALS"}, REQUEST_PERMISSION_CREDENTIALS);
立即触发的:
onRequestPermissionsResult (int requestCode, String[] permissions, int[] grantResults)
和导致code是 PackageManager.PERMISSION_DENIED
任何人有一个修复?
更新:
已知受影响:
UPDATE: Known to be affected:
Manifest.permission.CHANGE_NETWORK_STATE
Manifest.permission.WRITE_SETTINGS (solved, see Sam's answer)
android.permission.USE_CREDENTIALS (solved, read Update 2)
READ_SMS
更新2:
见优秀接受的答案。从本质上讲,USE_CREDENTIALS是一个安全的权限了。我百思不得其解,为什么不SDK只返回PERMISSION_GRANTED吧...
UPDATE 2: See excellent accepted answer. Essentially, USE_CREDENTIALS is a safe permission now. Beats me why sdk not simply return PERMISSION_GRANTED for it...
推荐答案
请参阅这些页面水平和<一个href=\"http://developer.android.com/reference/android/R.styleable.html#AndroidManifestPermission_protectionLevel\"相对=nofollow>保护级别定义的。
Refer to these pages: permissions by protection level and protection level definitions.
Manifest.permission.CHANGE_NETWORK_STATE
Manifest.permission.CHANGE_NETWORK_STATE
Manifest.permission.WRITE_SETTINGS
Manifest.permission.WRITE_SETTINGS
这些坠落下的保护级别签名| appop | pre23 | preinstalled,这意味着只有相同签名的应用程序(系统签订基本),应用运营商,针对低于API级别23和$应用p $ psintalled应用程序可以拥有这些。
These fall under the protection level "signature|appop|pre23|preinstalled" which means that only same-signature apps (system signed basically), app operators, apps that target below API level 23 and presintalled apps can have these.
android.permission.USE_CREDENTIALS
android.permission.USE_CREDENTIALS
这是只需要在API级别22及以下。见<一href=\"http://developer.android.com/reference/android/accounts/AccountManager.html#getAuthToken%28android.accounts.Account,%20java.lang.String,%20android.os.Bundle,%20boolean,%20android.accounts.AccountManagerCallback%3Candroid.os.Bundle%3E,%20android.os.Handler%29\"相对=nofollow>这个。
This is only needed on API level 22 and below. See this.
您也应该检查href=\"http://developer.android.com/$p$pview/behavior-changes.html\" rel=\"nofollow\">行为更改的
Also you should check out the Behavior Changes.
这篇关于Android的6棉花糖:对一些特定的权限请求即时与未显示的UI否认的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!