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

Posted

技术标签:

【中文标题】我可以跳过询问棉花糖的运行时权限吗?【英文标题】:Can i skip asking Runtime Permissions on marshmallow? 【发布时间】:2016-11-19 14:08:31 【问题描述】:

现在这对我来说非常有趣,我主要了解运行时权限,并且我很清楚为什么提出运行时权限?以及我们如何使用它?但是在this question 中,这是关于由于这个运行时权限问题而出现的问题,一个人提出了一种相当新的方法来解决这个问题。

查看U.swap 对同一问题的回答,here 就是那个答案。

这个人提出了一个很好的可行的解决方案,用户只需批准一次权限,在他的余生中他不必担心所有运行时权限,应用程序将在棉花糖版本上运行和在 cmets 中讨论的棉花糖前版本可以看到我和 Commonsware 之间讨论的所有 cmets。

@NiteshPareek:这个答案没有什么可以阻止 在 android 6.0+ 设备上运行的应用程序 -Commonsware

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

@Tapanparmar:不,因为用户可以手动撤销权限 设置。拥有 targetSdkVersion 22 或更低意味着您的应用是 不会有任何运行时权限代码,所以用户需要 在安装时同意您请求的权限。这是如何 Android 从一开始就工作。 – CommonsWare

好的,所以应用程序将在棉花糖上运行而不显示权限? @CommonsWare - Tapan Parmar

@Tapanparmar:此时将向用户显示权限 该应用程序已安装。 – CommonsWare

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

@Tapanparmar:用户可以选择不安装您的应用,如果他们不安装 就像预先授予所有权限一样。此外,其他行为 您可能希望基于更高的 targetSdkVersion 值可能会丢失。如果 您还有其他顾虑,请单独询问 Stack Overflow 问题。 – CommonsWare

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

查看答案中的 cmets here 或查看下图

【问题讨论】:

【参考方案1】:

这样做有什么实际的缺点吗?

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

以及作为 RunTimePermissions 主要目的的安全性会发生什么

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

这样做真的更可取吗?

恕我直言,不。最终,某些事情将迫使您升级您的targetSdkVersion。而且,正如我所指出的,用户可能更愿意不安装您的应用程序,而与其他一些应用程序一起使用,该应用程序在安装时不会要求很多权限。对于不再维护的应用程序或缺乏经验的开发人员,使用低于 23 的 targetSdkVersion 是一个很好的答案。

【讨论】:

相当不错。和可以理解的@Commonsware

以上是关于我可以跳过询问棉花糖的运行时权限吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android运行时权限中永远不会显示“不再询问”复选框

聊一聊 Android 6.0 的运行时权限

棉花糖权限不适用于低于 23 的 TargetVersion

棉花糖权限不适用于低于 23 的 TargetVersion

如何统一询问相机的运行时权限?

Android NotificationChannel 在运行时询问多个频道的权限?