Android的6棉花糖:对一些特定的权限请求即时与未显示的UI否认 [英] Android 6 Marshmallow: requests for some specific permissions are instantly denied with no ui shown

查看:197
本文介绍了Android的6棉花糖:对一些特定的权限请求即时与未显示的UI否认的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用官方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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆