要求 READ_SMS 要求 "send and view SMS messages"
Asking for READ_SMS asks for "send and view SMS messages"
我的应用程序只需要使用 "READ_SMS" 权限。
我的问题是,在 Android 6.0 上,当我需要使用新的权限系统时,它会向用户询问 "send and view SMS messages"。
这是我的代码:
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_SMS}, READ_SMS_PERMISION_REQ);
这是怎么回事?
谢谢!
What is going on?
它按预期工作。
当我们通过 requestPermissions()
请求权限时,用户接受或拒绝权限 groups。因此,如果您的数组有 READ_SMS
和 SEND_SMS
,尽管有两个权限,用户只需在运行时权限对话框中接受一件事。或者,如果你在这里只有 READ_SMS
(并且用户授予了权限),但后来为 SEND_SMS
调用了 checkSelfPermission()
,你会被告知你拥有它,因为用户授予整个短信权限组。
缺点是权限组经常覆盖读写权限,所以即使你只要求读,用户也会被告知你可以写。
我的猜测是 objective 是为了降低 accept/deny 决策的粒度。 requestPermissions()
采用权限而不是组这一事实意味着 Google 有权在 Android 的未来版本中改变主意,如果这个读与写问题成为用户的问题或开发人员。
我正在用这个
if (BuildUtil.isAndroidM()) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) !=
PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, PermissionUtil.sms(),
PermissionUtil.PERMISSION_SMS);
} else {
// TODO
}
} else {
// TODO
}
我的应用程序只需要使用 "READ_SMS" 权限。 我的问题是,在 Android 6.0 上,当我需要使用新的权限系统时,它会向用户询问 "send and view SMS messages"。
这是我的代码:
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_SMS}, READ_SMS_PERMISION_REQ);
这是怎么回事? 谢谢!
What is going on?
它按预期工作。
当我们通过 requestPermissions()
请求权限时,用户接受或拒绝权限 groups。因此,如果您的数组有 READ_SMS
和 SEND_SMS
,尽管有两个权限,用户只需在运行时权限对话框中接受一件事。或者,如果你在这里只有 READ_SMS
(并且用户授予了权限),但后来为 SEND_SMS
调用了 checkSelfPermission()
,你会被告知你拥有它,因为用户授予整个短信权限组。
缺点是权限组经常覆盖读写权限,所以即使你只要求读,用户也会被告知你可以写。
我的猜测是 objective 是为了降低 accept/deny 决策的粒度。 requestPermissions()
采用权限而不是组这一事实意味着 Google 有权在 Android 的未来版本中改变主意,如果这个读与写问题成为用户的问题或开发人员。
我正在用这个
if (BuildUtil.isAndroidM()) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) !=
PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, PermissionUtil.sms(),
PermissionUtil.PERMISSION_SMS);
} else {
// TODO
}
} else {
// TODO
}