Android 在API上安装应用程序期间询问所有权限>;23

Android 在API上安装应用程序期间询问所有权限>;23,android,google-play,android-permissions,Android,Google Play,Android Permissions,由于安卓M请求权限的唯一方法是在ant runtime上请求权限,但VK客户端应用程序在所有安卓版本上安装时都设法请求其所有权限。下面是pixel phone的屏幕截图。谁能告诉我这怎么可能 他们使用低于23的targetSdkVersion: “如果设备运行的是Android 6.0(API级别23)或更高版本,并且应用程序的targetSdkVersion为23或更高版本,则如果设备运行的是Android 5.1.1(API级别22),应用程序会在运行时向用户请求权限[…]或更低版本,或应用

由于安卓M请求权限的唯一方法是在ant runtime上请求权限,但VK客户端应用程序在所有安卓版本上安装时都设法请求其所有权限。下面是pixel phone的屏幕截图。谁能告诉我这怎么可能


他们使用低于23的targetSdkVersion:

“如果设备运行的是Android 6.0(API级别23)或更高版本,并且应用程序的targetSdkVersion为23或更高版本,则如果设备运行的是Android 5.1.1(API级别22),应用程序会在运行时向用户请求权限[…]或更低版本,或应用程序的targetSdkVersion为22或更低版本,系统会在用户安装应用程序时要求用户授予权限”


应用程序似乎没有更新以符合API级别>=23。您可以根据目标API级别管理不同的请求权限

如果设备运行的是Android 6.0(API级别23)或更高版本,且应用程序的targetSdkVersion为23或更高版本,则应用程序会在运行时向用户请求权限。用户可以随时撤销权限,因此应用程序需要在每次访问受权限保护的API时检查是否拥有权限。有关在应用程序中请求权限的详细信息,请参阅《使用系统权限培训指南》

如果设备运行的是Android 5.1.1(API级别22)或更低版本,或者应用程序的targetSdkVersion为22或更低版本,则系统会在用户安装应用程序时要求用户授予权限。如果向更新版本的应用程序添加新权限,系统会在用户更新应用程序时要求用户授予该权限。一旦用户安装了应用程序,他们可以撤销权限的唯一方法就是卸载应用程序


权限分为:正常权限或危险权限

-正常权限:不会对用户隐私或设备操作造成太大风险。如果您的应用程序在其清单中列出了正常权限,则系统会在安装时自动将这些权限授予您的应用程序(系统不会提示用户授予正常权限,并且用户无法撤销这些权限)

-危险权限:这些权限可能会影响用户的隐私或设备的正常操作,用户必须明确同意授予这些权限。 只有危险的权限需要用户同意。 但Android要求用户授予危险权限的方式取决于两件事:

1) 在用户设备上运行的android版本 2) 应用程序所针对的系统版本(targetSdkVersion)

  • 如果设备运行的是Android 6.0(API级别23)或更高版本,且应用程序“targetSdkVersion”为23或更高版本,则用户在安装时不会收到任何应用程序权限的通知,您的应用程序必须要求用户在运行时授予危险权限(有关如何请求权限和检查权限的信息,请参阅文档)
  • 如果设备运行的是Android 5.1.1(API级别22)或更低版本,或者应用程序“targetSdkVersion”为22或更低版本,系统会自动要求用户在安装时授予应用程序的所有危险权限

我可能错了,但为了保持向后兼容性,“较旧”的应用程序仍然可以在安装时请求权限。只有更新的应用程序(针对更高版本)必须在运行时执行此操作。对于新开发人员来说,运行时代码似乎有点奇怪……我知道此黑客行为,但这意味着应用程序将处于兼容模式。不坏吗?加上所有不能使用的新api…假设我永远不会使用它,如果你问我,我会强烈反对。但归根结底,这取决于你想要完成什么。在运行时询问权限非常简单,因此不应该避免。这个答案不再令人满意,截至2018年11月,Google Play将不接受targetSdkVersion小于26的APK。因此,这个解决方案的目标是23???让我猜猜,这是不可能的?谷歌在这方面确实犯了一个巨大的错误。我们的应用程序不是面向商业最终用户的,它们是商业工具。我们不希望最终用户对应用程序权限有任何控制。@另一方面,daneejela您可以做的是:定义一组权限,这些权限是应用程序最低限度工作所必需的,另一组是可选权限。然后,在启动屏幕之后,使用权限屏幕询问所有人,并让用户继续注册流程或应用程序的其他部分,前提是至少满足了强制性要求。在运行时询问可选,每次禁用一个必填项时,都会提示相同的权限屏幕再次收集它们。我实现了它,它就像一个魅力,我保证这是处理Android的最好方法permissions@Alessio,谢谢你,按照你在第二条评论中描述的方式来实现它是非常有意义的。我只是想知道。。。。我们为什么不继续使用api级别22来实现最简单的步骤呢?