Marshmallow权限不适用于低于23的TargetVersion

时间:2015-10-20 09:26:58

标签: android

我的项目是一个长期运行的项目。我将目标版本设置为10年,4年前。我无法将目标版本更改为23,因为我使用的是httpImageCache并且还存在UI问题。我的问题是,当Marshmallow发布时,我试图将Marshmallow与targetVersion 10整合,

 int returnedPermission = ContextCompat.checkSelfPermission(MyActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);

如果我从“应用程序设置”页面手动打开或关闭存储权限,此功能始终会返回“0”。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:4)

由于@Commonware已经给出了答案,但在这里我正在为可能对您有所帮助的问题添加更多细节。 根据官方Android开发者网站:

  • 如果设备运行的是Android 5.1或更低版本,或者您应用的目标 SDK为22或更低:如果您列出了危险权限 清单,用户在安装应用程序时必须授予权限;如果他们未授予权限,则系统根本不会安装该应用。

  • 如果设备运行的是Android 6.0或更高版本,以及您应用的目标 SDK为23或更高:应用程序必须列出权限 清单,它必须要求每个危险的许可 当应用程序运行时。用户可以授予或拒绝每个权限, 并且应用程序可以继续以有限的功能运行,即使是 用户拒绝权限请求。

由于您的目标SDK为10,因此应用程序将像以前一样完美运行。无论如何请注意,用户之后仍然可以撤销权限.. !!!虽然Android 6.0在尝试这样做时会警告用户,但无论如何他们都可以撤销。

以上陈述取自official android developer site

答案 1 :(得分:3)

  

任何人都可以帮助我吗?

删除该代码,因为它对您没用。如果您的targetSdkVersion低于23,则无法确定用户是否已撤消权限。

答案 2 :(得分:3)

使用PermissionChecker.checkSelfPermission()

当targetSdkVersion< = 22时,你也可以使用requestPermission()