Android - 将targetSdkVersion设置为22以避免运行时权限,有哪些潜在问题?

时间:2016-08-07 19:08:59

标签: android permissions

有人可以总结将targetSdkVersion设置为22以避免处理运行时权限的缺点吗?

在阅读了Google文档以及其他一些Stack Overflow帖子之后,我发现的唯一缺点是用户可以在安装时授予权限,然后进入他们的操作系统设置并撤消该特定应用的特定权限,然后再次运行该应用程序。然而,从一些例子中我发现在代码中处理这并不困难。

这是否真的是使用targetSdkVersion 22在安装时强制权限的唯一缺点?在未来几年,事情会保持这种状态吗?

另外,例如,如果我在build.gradle文件中使用这些设置:

compileSdkVersion 24
buildToolsVersion "24.0.1"
minSdkVersion 19
targetSdkVersion 22

我还可以访问API 23&应用程序中的24个功能,或者我限制为22及更早版本?

在有人回复&#34之前;最佳做法是不要这样做,并在运行时根据Google的建议请求权限,是的,我当然知道这一点。是的,我也知道有些例子试图提供锅炉板代码以询问运行时权限,例如:

https://github.com/googlesamples/easypermissions

但是至少有两种情况我可以想到在安装时请求权限并且如果未授予权限则不安装应用程序是非常有利的:

1)假设我报告的那个人在工作周的一半时间要求"你可以在星期五的会议上拼凑一个概念验证Android应用程序,这个会议会让XYZ显示我们当天有的访客吗? #34;如果我必须拼凑一个快速的alpha版本的应用程序,我只有几天时间来完成它,并且将基本功能放在一起需要很长时间,而应用程序将需要4​​个权限,它会要在安装时为alpha版本要求所有权限要好得多,所以我有时间花在应用程序功能上。然后,如果我继续前进,当我将应用程序移至测试版然后再移至最终版时,根据需要在运行时逐个更改权限请求。

2)某些应用程序绝对需要某些权限才能使用。例如,如果我正在编写一个OpenCV应用程序,该应用程序从相机中获取图像,然后根据图像中的内容进行处理,那么最好不要安装这样的应用程序。用户不愿意授予相机许可。

我真的希望Google将其作为选项在安装时请求/要求权限,并提供在运行时请求权限的选项。是否有任何负面的开发人员反馈,只能决定是否可以在运行时请求权限?谷歌是否可能在安装时或未来版本的运行时允许许可请求,在这种情况下,我可以在过渡期间简单地使用targetSdkVersion 22选项?

2 个答案:

答案 0 :(得分:5)

  

这是否真的是使用targetSdkVersion 22在安装时强制权限的唯一缺点?

没有。例如,除非您的targetSdkVersion为24或更高,否则Android 7.0及更高版本的设备用户将获得#34;此应用可能不支持分屏"尝试在分屏模式下使用您的应用时Toast

此外,关于运行时权限,请记住,targetSdkVersion为22或更低意味着在安装时将提示用户输入您请求的所有权限。您似乎认为这是积极的。潜在用户可能不同意。如果在安装时请求各种权限的App A和没有安装时的App B之间做出选择,用户将倾向于选择应用B,没有强烈的理由去使用App A.随着时间的推移,随着Android 6.0+推出更多在更多用户中,在安装时请求权限的应用程序将被视为未维护或写得不好,因为用户期望不必事先同意权限。

  

未来几年事情会保持这种状态吗?

没有

  

我还可以访问API 23&应用中的24项功能

是的,虽然有些人可能因您的targetSdkVersion而表现不同。

  

Google是否可能在安装时允许权限请求或在将来版本中运行

一切皆有可能。一般来说,谷歌不讨论这样的未来计划。

答案 1 :(得分:2)

https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html

中所述
  

在2018年下半年,Play将要求新的应用和应用更新定位到最近的Android API级别。这将是2018年8月的新应用程序以及2018年11月对现有应用程序的更新所必需的。这是为了确保应用程序构建在针对安全性和性能优化的最新API上。

因此我们必须尽快定位最新的SDK版本。