我目前正试图管理两个不同的蓝牙低能外围设备通过不同的片段在同一活动。
我目前遇到的问题是,广播接收器是由同一个外围设备在两个片段中触发的。
这两个片段都有不同的类和方法名称,因为我假装对传入的数据做了不同的事情。
这是BroadcastReceiver方法:
private final BroadcastReceiver mGattUpdateReceiver2 = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("OnReceive2");
final String action = intent.getAction();
if (BluetoothLeServiceHeart.ACTION_GATT_CONNECTED.equals(action)) {
mConnected2 = true;
updateConnectionState(R.string.connected);
} else if (BluetoothLeServiceHeart.ACTION_GATT_DISCONNECTED.equals(action)) {
mConnected2 = false;
updateConnectionState(R.string.disconnected);
clearUI();
} else if (BluetoothLeServiceHeart.ACTION_GATT_SERVICES_DISCOVERED.equals(action)) {
displayGattServices2(mBluetoothLeService2.getSupportedGattServices());
} else if (BluetoothLeServiceHeart.ACTION_DATA_AVAILABLE.equals(action)) {
displayData(intent.getStringExtra(BluetoothLeServiceHeart.EXTRA_DATA));
}
}
};我想我的问题是,我是否应该对每个人都有不同的BroadcastReceiver?如果是这样的话,我该怎么做。还是我做错了什么?
发布于 2018-03-30 03:41:38
您应该只创建一个BroadcastReceiver类。如果需要将调用与fragment1和fragment2区分开来,则可以在调用意图上添加额外的内容。例如:
// fragment1
intent.putExtra("key","fragment1");
context.sendBroadcast(intent);
// fragment2
intent.putExtra("key","fragment2");
context.sendBroadcast(intent);然后在onReceive上
String value = getIntent().getExtras().getString("key");
if (value.equals("fragment1") {
// called from fragment1
} else {
// called from fragment2
}https://stackoverflow.com/questions/49567922
复制相似问题