There are intermittent issues where either the returned Bluetooth
MAC address to Java framework is uninitialized or this address update
arrives too late. This fix will do 2 things:
(1) Returns error when MAC address is unavailable in the native code.
(2) Updates the MAC address later by adding a new broadcast event.
Test: Check address for these cases: factory reset, system reboot, and
Bluetooth re-enable.
Bug:
36709382
Change-Id: I6b71100c2c03c6f365f0dbc27d4e37c734145e30
(cherry picked from commit
6d5da5e7ffb69614706ca030bfe194a493b24e99)
break;
case AbstractionLayer.BT_PROPERTY_BDADDR:
mAddress = val;
- debugLog("Address is:" + Utils.getAddressStringFromByte(mAddress));
+ String address = Utils.getAddressStringFromByte(mAddress);
+ debugLog("Address is:" + address);
+ intent = new Intent(BluetoothAdapter.ACTION_BLUETOOTH_ADDRESS_CHANGED);
+ intent.putExtra(BluetoothAdapter.EXTRA_BLUETOOTH_ADDRESS, address);
+ intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
+ mService.sendBroadcastAsUser(
+ intent, UserHandle.ALL, mService.BLUETOOTH_PERM);
break;
case AbstractionLayer.BT_PROPERTY_CLASS_OF_DEVICE:
mBluetoothClass = Utils.byteArrayToInt(val, 0);