Android 权限是默认设置的,应用程序不知道它们是否关闭

Android permissions are set by default and application doesn't know if they are off

我更新了 xamarin android,现在使用 7.0 版 (Nougat) 编译应用程序。但是当我在 6.0.1(marshmallow) 上部署应用程序时,所有权限都已设置。当我从设置中关闭位置权限时,警报显示 "this app was designed for an older version of android. denying permission may cause it to no longer function as intended"。然后,如果我们无论如何都拒绝应用程序 return Permission.Granted 中的权限和方法 Context.CheckSelfPermission。 这是 xamarin 问题还是 SelfPermission 行为发生了某些变化?

Application.Context.CheckSelfPermission(Manifest.Permission.AccessCoarseLocation) == Permission.Granted//returns true, even if permission is off     
 Application.Context.CheckSelfPermission(Manifest.Permission.AccessFineLocation) == Permission.Granted//returns true, even if permission is off

我遇到了类似的问题。似乎解决了我的问题的是更改 Xamarin 中的项目选项。在项目选项的 Android 应用程序选项卡中,我为目标 Android 版本选择了 "Automatic - use target framework version (API 24)",当我将其更改为 "Override - Android 7.0 (API 24)" 时,问题似乎已经解决了。

我的解决方案是在清单中将目标 SDK 设置为 23。这样,它会告诉设备您已经针对此 API 级别进行了测试,因此 AppCompat 方法 CheckSelfPermission 将起作用。

显然您需要设置和显式 targetSdkVersion,自动似乎会导致 < 23 行为。