对于执行需要用户在Android 6.0 Marshmallow中禁止的权限的代码的未更新应用,会发生什么情况

Joa*_*kim 4 android android-permissions android-6.0-marshmallow

我想知道新的Android 6.0 Marshmallow功能,它允许用户明确设置允许应用程序使用哪些权限.我的问题是这会如何影响使用权限集的现有应用程序.

例如,未更新的应用程序[Target-sdk-version <23]已显示使用相机的权限,但用户手动禁止它.当应用程序执行使用该权限的代码时会发生什么?它会崩溃吗?

我假设新应用程序在执行依赖于权限的代码之前必须检查它们是否具有权限 - 我的问题是关于更改以处理这些情况的应用程序.

Com*_*are 10

我的问题是关于不会更改以处理这些情况的应用程序

隐含的假设是,targetSdkVersion它将低于23.任何将其设置targetSdkVersion为23或更高的人必须更改其应用程序以处理运行时权限,否则他们永远无法获得dangerous权限.

在那种情况下,从我的书中引用自己:

targetSdkVersion表面上低于23的应用程序在Android 6.0+上的行为与旧设备上的应用程序相同:系统会提示用户输入所有权限,如果安装了应用程序,应用程序将被授予这些权限.

但是,对于应用程序在其中一个运行时权限组中请求的任何权限,用户可以进入"设置"并撤消这些应用程序的权限.

一般来说,你最终会忽略这个问题.所有对受用户撤销权限保护的方法的调用仍将"正常",只要它们不会抛出SecurityException.但是,您只是不会得到任何结果或具有预期的效果.因此,例如,如果您尝试query() 使用ContactsContract ContentProvider,并且用户撤消了对与联系人相关的权限的访问权限,query()则返回空 Cursor.这是一个完全有效的响应,甚至忽略了权限问题,因为用户完全有可能没有联系人.无论如何,您的应用应该优雅地处理这些案例.因此,理论上,即使您没有对丢失的权限做任何特殊处理,您的应用程序也应该存在,尽管用户的功能会减少.Dave Smith 概述了 传统应用调用方法无法获得许可的预期结果.

  • 谢谢你的解释,所以使用互联网对谷歌来说并不危险......很高兴知道. (2认同)