为什么RECEIVE_SMS和READ_SMS权限没有不同的提示框来请求权限?

Sud*_*hra 1 android android-permissions

我在我的应用程序的清单文件中列出了RECEIVE_SMS和READ_SMS的权限,并且它们都具有不同的权限字符串.

授予相应的权限.但是,我注意到,在授予(由用户)任何一个权限(READ_SMSRECEIVE_SMS)时,我们可以执行这两个任务.我的问题是,如果它们都执行不同的任务:

1)READ_SMS:它允许应用程序读取用户手机上的所有SMS(当前存在).

2)RECEIVE_SMS:它允许应用程序收听用户使用应用程序时在用户手机上收到的所有短信.

它们在请求权限时显示相同的对话框,并且在拒绝其中一个权限时显示两个对话框都没有出现.

如果两者都具有相同的权限授予方案,那么为什么它们以两种权限的形式分开?如果你们中的任何人能够帮助我理解这一点,那么对我来说这将是一个很大的帮助.

lib*_*ib4 5

根据请求权限的Android文档:

权限组:
所有危险的Android系统权限都属于权限组.如果设备运行的是Android 6.0(API级别23)且应用的targetSdkVersion为23或更高,则当您的应用请求危险权限时,以下系统行为适用:

如果应用程序请求其清单中列出的危险权限,并且该应用程序当前在权限组中没有任何权限,则系统会向用户显示一个对话框,描述该应用程序要访问的权限组.该对话框不描述该组中的特定权限.例如,如果某个应用请求READ_CONTACTS权限,则系统对话框只显示该应用需要访问该设备的联系人.如果用户授予批准,系统将为应用程序提供其请求的权限.

如果应用程序请求其清单中列出的危险权限,并且该应用程序已在同一权限组中具有其他危险权限,则系统会立即授予权限,而不与用户进行任何交互.例如,如果应用程序先前已请求并已获得READ_CONTACTS权限,然后它请求WRITE_CONTACTS,则系统立即授予该权限.

警告:未来版本的Android SDK可能会将特定权限从一个组移动到另一个组.因此,请不要将应用程序的逻辑基于这些权限组的结构.例如,如果您的应用请求READ_CONTACTS权限,然后是WRITE_CONTACTS权限,则不应假设系统可以自动授予WRITE_CONTACTS权限,即使它与Android 8.0中的READ_CONTACTS属于同一权限组(API级别26) .

所有SMS相关权限都在权限组SMS下.
以下是SMS权限组下的权限列表:

  • 发送短信
  • 发送短信
  • RECEIVE_SMS
  • READ_SMS
  • RECEIVE_WAP_PUSH
  • RECEIVE_MMS