我可以跳过询问棉花糖的运行时权限吗?

Can i skip asking Runtime Permissions on marshmallow?

现在这对我来说非常有趣,我最了解运行时权限并且我很清楚为什么建议运行时权限?我们如何才能使用它? 但是在 this question 中,由于这个 运行 时间许可的事情而出现了一个问题,一个人提出了一个相当新的方法来解决这个问题。

参见 U.swap's answer on the same question,here 就是那个答案。

这家伙提出了一个很好的工作解决方案,用户只需批准一次权限,在他的余生中他不必担心所有 运行时权限 和应用程序将 运行 评论中讨论的棉花糖版本和前棉花糖版本 请参阅我和 Commonsware 之间讨论的所有评论。

@NiteshPareek: There is nothing about this answer that prevents the app from running on Android 6.0+ devices -Commonsware

但这意味着我们可以购买运行时权限所提出的安全性? @CommonsWare – Tapan parmar

@Tapanparmar: No, as users can manually revoke permissions in Settings. Having targetSdkVersion 22 or lower means that your app is not going to have any runtime permission code, so the user needs to agree to your requested permissions at install time. This is how Android worked from the beginning. – CommonsWare

好的,所以应用会在不显示权限的情况下 运行 在棉花糖上? @CommonsWare - Tapan Parmar

@Tapanparmar: The user will be presented with permissions at the time the app is installed. – CommonsWare

好的,所以我们可以跳过由此提供的该死的权限,但是这样做有什么缺点吗? @CommonsWare

@Tapanparmar: Users may elect not to install your app, if they do not like granting all the permissions up front. Also, other behaviors that you might want based on higher targetSdkVersion values may be lost. If you have additional concerns, please ask a separate Stack Overflow question. – CommonsWare

所以我想知道这样做有什么实际缺点security 会发生什么,这是 RunTimePermissions 的主要目的。 这样做真的更好吗?

查看答案评论here或查看下图

are there any actual drawbacks of doing this?

如果用户不喜欢预先授予所有权限,他们可能会选择不安装您的应用。此外,您可能希望基于更高 targetSdkVersion 值的其他行为可能会丢失。

And what will happen to security which was main purpose of RunTimePermissions

没有。您仍然需要所有 <uses-permission> 元素,并且用户仍然必须同意授予您权限。但是,该协议主要发生在安装时,而不是应用 运行 时。请记住,Android 6.0+ 设备的用户仍然可以通过“设置”应用撤销 dangerous 级别的权限。

And is it really preferable to do this?

恕我直言,没有。最终,某些事情会迫使您采取行动并要求您升级 targetSdkVersion。而且,正如我所指出的,用户可能更愿意不安装您的应用程序,而选择其他一些在安装时不需要太多权限的应用程序。使用低于 23 的 targetSdkVersion 对于不再维护的应用程序或没有经验的开发人员来说是一个很好的答案。