Android蓝牙发现广播接收器不工作



我只是无法让Android扫描蓝牙设备。我尝试了几种不同的方法,但都不起作用。这是我的最新代码。

// Create a BroadcastReceiver for ACTION_FOUND.
devicesFoundReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// Discovery has found a device. Get the BluetoothDevice
// object and its info from the Intent.
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
String deviceName = device.getName();
String deviceHardwareAddress = device.getAddress(); // MAC address
devicesListArray.add(deviceName + "n" + deviceHardwareAddress);
arrayAdapter.notifyDataSetChanged();
}
}
};

我这样注册接收器:

_thisContext.registerReceiver(devicesFoundReceiver, filter);

我的清单具有以下权限:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

我打电话给

bluetoothAdapter.startDiscovery();

broadcastreceiver上的OnReceiveNEVER开火。我厌倦了看无数不同的网站,有些网站采用相同的方法,有些网站则不然。但它们都不起作用。我做错了什么?

以下是SDK版本供参考:

minSdkVersion 26
targetSdkVersion 30

手机的蓝牙相关动作与网络无关。您的问题通常是由于缺乏授权的位置权限造成的。当targetsdkversion 23或更高版本时,您需要动态请求移动定位权限"android.permission.ACCESS_FINE_location"可以搜索附近的蓝牙设备。当然,您可以将该项目的targetsdkvversion版本降低到23以下。通过这种方式,您不需要动态地申请权限。以下是一些不错的动态权限应用程序开源库,希望能对您有所帮助:https://github.com/googlesamples/easypermissionshttps://github.com/permissions-dispatcher/PermissionsDispatcher

最新更新