我能否在Marshmallow上跳过询问运行时权限?

4

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

请参见同一问题上U.swap的答案,此处是该答案。

这个人提出了一个好的、可行的方案,用户只需批准一次权限,其余时间他不必担心所有的运行时权限,并且应用程序将在棉花糖版本和预棉花糖版本上运行,如评论所讨论的那样,请查看我和Commonsware之间的所有评论。

@NiteshPareek: 此答案没有任何阻止应用程序在Android 6.0+设备上运行的内容 -Commonsware

但这是否意味着我们可以绕过Runtime Permissions提出的安全性?@CommonsWare - Tapan parmar

@Tapanparmar:不,因为用户可以在设置中手动撤销权限。目标SdkVersion为22或更低意味着您的应用程序不会有任何运行时权限代码,因此用户需要在安装时同意您请求的权限。这是Android从一开始就运作的方式。- CommonsWare

好的,那么应用程序将在Marshmallow上运行而无需显示权限吗?@CommonsWare - Tapan Parmar

@Tapanparmar:用户将在安装应用程序时被要求授权。- CommonsWare

好的,那么我们可以通过这种方式跳过提供的权限,但这样做是否有任何缺点?@CommonsWare

@Tapanparmar:如果用户不喜欢一开始就授予所有权限,他们可能选择不安装您的应用程序。此外,基于更高targetSdkVersion值的其他行为可能会丢失。如果您有其他疑虑,请提出单独的Stack Overflow问题-CommonsWare 所以我想知道这样做是否有任何实际的缺点?而主要目的是RunTimePermissions的安全性会发生什么变化。这样做真的是可取的吗?
请参见答案here上的评论或查看下面的图片

Discussion comments

1个回答

4

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

如果用户不喜欢一开始就授权所有权限,他们可能会选择不安装您的应用程序。此外,基于更高的targetSdkVersion值的其他行为可能会丢失。

运行时权限的主要目的是安全性,这将发生什么?

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

真的最好这样做吗?

依我的意见,不是的。最终,某些因素会迫使您升级您的targetSdkVersion。并且,如我所述,用户可能不想安装您的应用程序,转而选择其他不需要在安装时请求多个权限的应用程序。使用低于23的targetSdkVersion对于不再维护或经验不足的开发人员的应用程序是一个很好的解决方案。


1
相当不错,易于理解 @Commonsware - TapanHP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接