我的项目是一个长期运行的项目。我将目标版本设置为10年,4年前。我无法将目标版本更改为23,因为我使用的是httpImageCache并且还存在UI问题。我的问题是,当Marshmallow发布时,我试图将Marshmallow与targetVersion 10整合,
int returnedPermission = ContextCompat.checkSelfPermission(MyActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
如果我从“应用程序设置”页面手动打开或关闭存储权限,此功能始终会返回“0”。任何人都可以帮助我吗?
答案 0 :(得分:4)
由于@Commonware已经给出了答案,但在这里我正在为可能对您有所帮助的问题添加更多细节。 根据官方Android开发者网站:
如果设备运行的是Android 5.1或更低版本,或者您应用的目标 SDK为22或更低:如果您列出了危险权限 清单,用户在安装应用程序时必须授予权限;如果他们未授予权限,则系统根本不会安装该应用。
如果设备运行的是Android 6.0或更高版本,以及您应用的目标 SDK为23或更高:应用程序必须列出权限 清单,它必须要求每个危险的许可 当应用程序运行时。用户可以授予或拒绝每个权限, 并且应用程序可以继续以有限的功能运行,即使是 用户拒绝权限请求。
由于您的目标SDK为10,因此应用程序将像以前一样完美运行。无论如何请注意,用户之后仍然可以撤销权限.. !!!虽然Android 6.0在尝试这样做时会警告用户,但无论如何他们都可以撤销。
答案 1 :(得分:3)
任何人都可以帮助我吗?
删除该代码,因为它对您没用。如果您的targetSdkVersion
低于23,则无法确定用户是否已撤消权限。
答案 2 :(得分:3)
使用PermissionChecker.checkSelfPermission()
当targetSdkVersion< = 22时,你也可以使用requestPermission()