将包从服务传递到接收器返回 null
我想将数据包从服务传递到接收器以立即更改 ui 数据
我已将数据包作为哈希映射键传递并在活动类中获得相同但总是为空我只是在代码中注册 registerReceiver 而不是在清单中
主要活动
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
try {
if (intent != null) {
Bundle extras = intent.getBundleExtra("hashmap");
Toast.makeText(context, extras + " " + intent.getBundleExtra("hashmap"), Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
@Override
protected void onResume() {
super.onResume();
try {
LocalBroadcastManager.getInstance(this).registerReceiver(receiver, new IntentFilter(FIRMessagingService.REQUEST_ACCEPT));
} catch (Exception e) {
e.printStackTrace();
}
/* try {
registerReceiver(receiver, new IntentFilter(FCMActivity.NEW_NOTIFICATION));
} catch (Exception e) {
e.printStackTrace();
}*/
}
@Override
protected void onDestroy() {
super.onDestroy();
try {
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver);
} catch (Exception e) {
}
/*try {
unregisterReceiver(receiver);
} catch (Exception e) {
e.printStackTrace();
}*/
}
服务(火力基地)
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.e("Msg", remoteMessage.getData().size() + "");
//sendNotification(remoteMessage.getData());
try {
LocalBroadcastManager broadcaster = LocalBroadcastManager.getInstance(getBaseContext());
HashMap<String, String> data = new HashMap<>();
Bundle msg = new Bundle();
for (String key : data.keySet()) {
Log.e(key, data.get(key));
msg.putString(key, data.get(key));
}
Intent intent = new Intent(REQUEST_ACCEPT);
intent.setAction(REQUEST_ACCEPT);
intent.putExtra("hashmap", msg);
broadcaster.sendBroadcast(intent);
} catch (Exception e) {
Log.e("error" + "receiver", e.toString());
}