Spy*_*Zip 35 permissions android android-6.0-marshmallow
我用它来获得许可:
if (ContextCompat.checkSelfPermission(context, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(context, Manifest.permission.GET_ACCOUNTS)) {
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(context, new String[]{Manifest.permission.GET_ACCOUNTS}, PERMISSIONS_REQUEST_GET_ACCOUNTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
Run Code Online (Sandbox Code Playgroud)
但是权限的弹出对话框要求用户访问联系人!?!?
在Play商店的6.0之前
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
Run Code Online (Sandbox Code Playgroud)
请求被命名为Identity并解释我需要它来获取设备帐户.
Par*_*rth 34
那是因为权限组.基本上,权限放在不同的组下,如果授予其中一个权限,则授予该组的所有权限.
例如.在"联系人"下,有写/读联系人和获取帐户,因此当您要求其中任何一个时,弹出窗口会询问联系人权限.
通读:每个Android开发人员必须了解新Android的运行时权限
编辑1
只是想我添加相关(不是获取帐户,但权限和组)奥利奥更新信息:
来源:https://developer.android.com/about/versions/oreo/android-8.0-changes.html#rmp
在Android 8.0(API级别26)之前,如果应用程序在运行时请求了权限并且授予了权限,则系统也会错误地授予应用程序其他属于同一权限组的权限,并且已在表现.
对于定位到Android 8.0的应用,此行为已得到纠正.该应用程序仅被授予其明确请求的权限.但是,一旦用户向应用程序授予权限,则会自动授予该权限组中所有后续权限请求.
Com*_*are 18
GET_ACCOUNTS已移至CONTACTSAndroid 6.0中的权限组.虽然API让我们提供权限,但系统会提示用户(至少为Android 6.0)提供权限组.因此,用户将被赋予相同的提示GET_ACCOUNTS的用户将得到READ_CONTACTS和WRITE_CONTACTS.
幸运的是,这将在Android N中发生变化
http://developer.android.com/preview/behavior-changes.html#perm
现在不推荐使用GET_ACCOUNTS权限.系统会忽略针对Android N的应用的此权限.
| 归档时间: |
|
| 查看次数: |
41774 次 |
| 最近记录: |