我想在安装应用程序后向用户请求任何权限。
是否可以从当前API(7.0)到API级别19(4.4)请求运行时权限?
我已经阅读了文档,我尝试了很多例子。一切似乎太复杂,我甚至看到插件来请求权限。
该文档提供了一个使用几个NuGet包的示例:qazxsw poi
但它仅适用于Android M(6.0 API级别23)及以上......
本文讨论它:https://developer.xamarin.com/samples/monodroid/android-m/RuntimePermissions/
例如,在我的情况下,我想检查应用程序是否具有“权限CAMERA”,如果没有请求用户,如下所示:
https://blog.xamarin.com/requesting-runtime-permissions-in-android-marshmallow/
应用程序打开时不显示任何内容检查有效,但“RequestPermissions”不向用户询问任何内容。
任何人都可以给我一个例子来从一个简单的代码请求运行时权限(与M之前的版本兼容)吗?
我得到了与你相同的结果,所以做了一点调查。诀窍是你必须在2个地方设置权限。 1.在清单2.运行时请求权限如此处所示if (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(this, Manifest.Permission.Camera) != (int)Permission.Granted) {
// Permission has never been accepted
// So, I ask the user for permission
ActivityCompat.RequestPermissions(this, new String[] { Manifest.Permission.Camera }, REQUEST_CAMERA);
} else {
// Permission has already been accepted previously
}
结果不同。
在所有Android版本上,您的应用需要在其应用清单中声明其所需的正常和危险权限,如声明权限中所述。但是,根据系统版本和应用程序的目标SDK级别,该声明的效果会有所不同:
如果设备运行的是Android 5.1或更低版本,或者应用的目标SDK为22或更低:如果您在清单中列出了危险权限,则用户必须在安装应用时授予权限;如果他们不授予权限,系统根本不会安装应用程序。如果设备运行的是Android 6.0或更高版本,并且您的应用的目标SDK为23或更高:应用必须列出清单中的权限,并且必须在应用运行时请求它所需的每个危险权限。用户可以授予或拒绝每个权限,即使用户拒绝权限请求,应用程序也可以继续以有限的功能运行。
运行时权限在Android 6.0(API 23 - Marshmallow)中引入。因此,您将无法以编程方式在任何低于23的Android API上设置运行时权限。您在问题中链接的https://developer.android.com/training/permissions/requesting.html指南可能是此处的最佳资源,而Requesting Runtime Permissions in Android Marshmallow部分显示了检查API级别和防止的逻辑运行时权限工作流在23之前的API级别上调用。
对于22及之前的先前API级别,您需要在Check the SDK Version
中添加安装时权限,如AndroidManifest.xml
指南中所述。