android - 通过 Intent 将类对象传递给android中的广播接收器

标签 android android-intent broadcastreceiver

大家好,我遇到了一个问题,请帮帮我。

为我服务

ChatMessage chatMessage = new ChatMessage();
chatMessage.setId(10)
chatMessage.setMessage("hello");
Intent intent = new Intent("MessageReceiver");
intent.putExtra("chatobj", chatMessage);
getApplicationContext().sendBroadcast(intent);

在我的 Activity 中

public final BroadcastReceiver ReceiveChat = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
ChatMessage chatMessage = new ChatMessage(getIntent().getSerializableExtra("chatobj"));
Log.v(CommonUtilities.TAG, chatMessage.getMessage()+": new message");
}};

此代码在我的 Activity 开始时,在 oncreate() 之前。这是个问题吗? 日志具有空值。这是为什么?

最佳答案

在模型类中实现 Serializable。问题将得到解决

像这样

public class ChatMessage  implements Serializable{

 int id; 
 String name;
}

像这样发送数据

Intent intent = new Intent("MessageReceiver");
Bundle args = new Bundle();
args.putSerializable("chatobj",(Serializable)chatobj);
intent.putExtra("DATA",args);
startActivity(intent);

这样接收数据

Intent intent = getIntent();
Bundle args = intent.getBundleExtra("DATA");
ChatMessage chatMessage = (ChatMessage) args.getSerializable("chatobj");

关于android - 通过 Intent 将类对象传递给android中的广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45454088/

相关文章:

android - 如何从子 Activity 完成父 Activity

java - 无法创建广播接收器android

android - 在android上以编程方式获取来电号码

javascript - 在 Chrome Android 中获取 BLOB

java - CATCH 异常是否会报告给 Firebase/Fabric 等?

android - Android App 中的 Facebook read_mailbox 权限

java - 在sqlite android中获取现有行的插入语句

java - 返回 Android 中的上一个 Activity

Android Intent 不适用于 .apk 文件

java - 从接收者通知线程