我正在使用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