关于Android M中的运行时权限模型

时间:2016-12-18 09:11:14

标签: android

我的应用程序有targetSDKVersion = 21和compileSDKVersion = 21.现在对于某些功能我通过在Manifest中声明它来使用位置权限。

当我在Android M(6.0)及以上设备上运行相同的应用程序时,我的应用程序运行良好,系统自动提供了应用程序,因为系统应用了兼容性功能,因为Android目标SDK版本为21。

但是在Android M(+)设备中引入了用户新权限模型,因为现在用户可以从设置中禁用应用程序的位置权限。

现在发生这种情况..我的应用程序自动启动,这很好。我无法检查是否已向我的应用授予位置权限。无论如何,我可以在编译SDK版本21中检查应用程序的权限。?

如果我们的应用程序的目标SDK是22或更低:如果我们在清单中列出危险权限,则用户必须在安装应用程序时授予权限;如果他们不授予权限,系统根本不会安装该应用程序。

但是,如果用户已安装应用程序并撤消对我们的应用程序至关重要的权限,该怎么办?那么我应该假设我们的开发人员是应用程序用户的怜悯?

谢谢

2 个答案:

答案 0 :(得分:1)

运行时权限从api 23开始,在此链接中,您可以看到如何询问它以及如何查看您是否被授予访问权限。

https://developer.android.com/training/permissions/requesting.html

在版本23之前,你要求清单中的permisions。 你也可以先用以下方法检查android级别:

Integer.valueOf(android.os.Build.VERSION.SDK);

如果您不想更改目标sdk(我认为您应该) 你可以使用:

ContextCompat.checkSelfPermission()
ActivityCompat.requestPermissions(), 
ActivityCompat.shouldShowPermissionRequestRationale()

而不是android开发者选项 希望它有所帮助。

答案 1 :(得分:1)

在Android M +中,您可以检查是否授予了权限,并通过启用/禁用应用中的特定功能来对其进行操作。

Android权限通常分为正常和危险权限。

正常权限:自动授予,无需用户批准。 (像往常一样添加到xml中。)

危险权限需要用户批准,您必须在任何时候使用它以确保用户未将其关闭之前检查是否已授予这些权限。

此链接解释了所有包含的代码段: 的 https://developer.android.com/training/permissions/requesting.html