我正在使用altbeacon库监视和范围信标。我已经阅读了您的请求许可页面,只是想知道,如果我针对API 23+()的位置权限,扫描将在具有API < 23的设备上工作吗?我没有真正的设备,所以无法测试它。或者是否有任何方法不要求使用API低于23的设备请求位置许可?感谢您的回答位置目标权限23
位置目标权限23
回答
再论的核心问题:
如果你建立具有的minSdkVersion < 23但targetSdkVersion一个应用程序> = 23,当您尝试扫描蓝牙信标会发生什么?
简答:它的工作原理。
较长的答案:
用户权限要求不会发生。与minSdkVersion < 23,编译器将阻止您包含一行代码,如
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION);
,因为它不会在早期的Android版本上运行。如果你将它包装在一个像if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
这样的if语句中,它将不会被执行。如果您添加注释,例如@SuppressLint("NewApi")
,则尝试执行代码时,应用程序将崩溃。无论用户权限是否被授予,信标扫描都将在前台和后台工作。早期的Android版本无法向用户请求权限,因此该应用的行为就好像他们已经被授予了一样。
感谢,这是我正在寻找的答案! –
在Android 23上,您需要检查应用程序是否已被授予“危险”权限,并且是否要求用户。
Android支持库为此提供了辅助函数。
请参阅Requesting Permissions at Run Time。 主要功能是checkSelfPermission
和requestPermissions
。
为了不与旧版本的Android的问题,你可以使用以下命令来检查您是否运行棉花糖或没有在设备上:
public static boolean isMNC() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
}
这将返回true
如果您运行的棉花糖的设备上或更新,否则为false
。所以,如果这返回true
,请检查权限,否则不要。
您应该也可以在调用checkSelfPermission
和requestPermissions
的函数上使用注释@SuppressLint("NewApi")
。
根据:[链接](https://altbeacon.github.io/android-beacon-library/requesting_permission.html)我不知道如果该库将执行扫描信标,如果该权限仅适用于API 23 +。 。这就是我要求的:D –
在Android Beacon库2.9.1的AndroidManifest上看,它使用以下内容来包含ACCESS_COARSE_LOCATION权限:
- 1. 权限不工作后的GPS位置(SDK 23)android studio
- 2. 的Android 6的目标SDK = 23个权限上安装
- 3. Android位置权限
- 4. 意外标记,在JSON在位置23
- 5. Android 5.1.1的位置权限
- 6. 位置权限再次onRequestPermissionsResult
- 7. Android 5.1的位置权限
- 8. Internet位置更新权限
- 9. Android位置权限错误
- 10. 位置3G的权限
- 11. Android的位置的权限
- 12. Android 6.0位置权限
- 13. UIWebView询问位置权限
- 14. Android API权限列表API 23中的正常权限和危险权限?
- 15. 位置权限检查和授权
- 16. 第23行拒绝move_uploaded_file权限
- 17. 为23 API Android权限和高达
- 18. Android API 23请求多个权限
- 19. 活动意图权限Android M SDK 23
- 20. android sdk 23检测权限问题(java.lang.SecurityException)
- 21. Android Widget - Read_SMS权限被拒绝API 23
- 22. Android 6.0权限和目标
- 23. Android M:系统权限与WebView位置权限
- 24. WPF IDataErrorInfo图标位置权
- 25. 蟒蛇,在复制过程中更改目标位置的权限
- 26. WiX权限 - 在预先存在的目录上设置权限
- 27. IIS 7权限:如何为目录设置正确的权限?
- 28. 使目录权限被拒绝,但权限设置正确
- 29. 请求位置更新权限的iOS
- 30. 位置服务权限未保存iOS
为什么不使用虚拟设备进行测试?所有的API都可用。仅供参考,API 23对权限做了巨大的改变,从那里开始,应该在运行时检查权限,在此之前,这使用了清单,所以没有理由阻止。 – AxelH
虚拟设备无法使用蓝牙,需要扫描信标。 –
我的不好,但评论的其余部分仍然存在。您需要针对之前的23和其他版本管理权限。 – AxelH