根据文档 https://developer.android.com/guide/topics/connectivity/bluetooth/permissions,您需要基于目标 Android API 版本的特定权限。
如果您的应用程序目标Android 11(API 级别 30)或更低,在应用程序的清单文件中声明以下权限:
如果您的应用面向 Android 9(API 级别 28)或更低版本,您可以声明ACCESS_COARSE_LOCATION
许可而不是ACCESS_FINE_LOCATION
允许。
为了执行扫描以发现 BLE 设备,应用程序必须向用户明确要求ACCESS_FINE_LOCATION
or ACCESS_COARSE_LOCATION
许可也应在AndroidManifest.xml
.
在我的项目(WearOS API 版本 28)中,我在onCreate
的函数MainActivity
class
if (ContextCompat.checkSelfPermission(
this, Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(this,new String[] { Manifest.permission.ACCESS_FINE_LOCATION },
1);
}
我重写了onRequestPermissionsResult
功能
public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) {
switch (requestCode) {
case 1:
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 &&
grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Logger.d("MainActivity","Permission approved");
} else {
Logger.d("MainActivity","Error getting permission");
}
return;
}
}
这对我有用,希望对你有帮助