关于androidm中的运行时权限模型

关于androidm中的运行时权限模型,android,Android,我的应用程序targetSDKVersion=21,compileSDKVersion=21。现在,对于某些功能,我通过在清单中声明位置权限来使用位置权限 当我在安卓M(6.0)及以上设备上运行相同的应用程序时,我的应用程序运行良好,并且由于安卓目标SDK版本为21,系统应用了兼容功能,因此系统会自动为我的应用程序提供权限 但在安卓M(+)设备中,用户引入了新的权限模型,因为现在用户可以从设置中禁用应用程序的位置权限 现在事情发生了。。我的应用程序会自动启动,这很好。我无法检查我的应用程序是否具

我的应用程序targetSDKVersion=21,compileSDKVersion=21。现在,对于某些功能,我通过在清单中声明位置权限来使用位置权限

当我在安卓M(6.0)及以上设备上运行相同的应用程序时,我的应用程序运行良好,并且由于安卓目标SDK版本为21,系统应用了兼容功能,因此系统会自动为我的应用程序提供权限

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

现在事情发生了。。我的应用程序会自动启动,这很好。我无法检查我的应用程序是否具有位置权限。我是否可以在编译SDK版本21中检查应用程序的权限

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

但若用户已经安装了应用程序并撤销了对我们的应用程序至关重要的权限,该怎么办呢。那么,我应该假设我们开发人员受应用程序用户的摆布吗


谢谢

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

在版本23之前,您需要在menifest中获得许可。 您还可以先使用以下工具检查android级别:

Integer.valueOf(android.os.Build.VERSION.SDK);
如果您不想更改您的目标sdk(我认为您应该) 您可以使用:

ContextCompat.checkSelfPermission()
ActivityCompat.requestPermissions(), 
ActivityCompat.shouldShowPermissionRequestRationale()
而不是android开发者选项
希望有帮助。

在android M+中,您可以检查是否授予了权限,并通过启用/禁用应用程序中的特定功能来执行操作

Android权限一般分为普通权限和危险权限

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

危险的权限需要用户批准,您必须在任何时候使用它之前检查它们是否被授予,以确保用户没有关闭它

此链接用包含的代码片段解释了这一切:

谢谢你的回答,伙计。。。我们的目标是SDK版本21。让我看看进展如何。谢谢。。我已经访问了已经发布的链接。我的问题有点不同。我的应用程序目前的目标是SDK 21。所以我想找到一个解决办法,这和男人没什么两样。这是我们大多数安卓开发者的默认情况。您将添加一个以版本SDK Integer.valueOf(android.os.Build.Version.SDK)为条件的更新;如果是21或以上,您将确保授予权限,或者使用这些权限禁用某些功能,每次用户尝试使用时,您都会弹出一个对话框,要求他允许权限