如何将可序列化的对象发送到另一个Android应用程序

时间:2019-07-03 16:19:39

标签: java android serialization

我对Java还是很陌生,我一直在尝试跨应用程序发送可序列化的对象。我正在尝试设置2个独立的应用程序,并让应用程序A通过广播将序列化对象发送到应用程序B,但我遇到这样的错误:java.lang.RuntimeException:Parcelable在读取可序列化对象(名称为com时遇到ClassNotFoundException)。 appA.UserConfig)。

我已经阅读了有关此问题的几个问题,但似乎找不到有关此问题或可能的具体答案。 到目前为止,我唯一的进步和理解是,如果我声明相同的类/将类从App A复制到App B,App B应该能够读取可序列化的对象吗?

当前,这是我的App A代码:

UserConfig.java:

public class UserConfig implements Serializable {
    public final String var1;
    public final String[] var2;
    public final Map<String, Object> var3;

    public UserConfig(Map<String, Object> map, String[] strArr, String str) {
        this.var3 = map;
        this.var2 = strArr;
        this.var1 = str;
    }
}

MainActivity.java:

Intent intent = new Intent("com.appA.action.userConfig");
intent.putExtra("userConfig", userConfig);
sendBroadcast(intent);

对于App B,我已经复制了UserConfig文件:

UserConfig.java:

public class UserConfig implements Serializable {
    public final String var1;
    public final String[] var2;
    public final Map<String, Object> var3;

    public UserConfig(Map<String, Object> map, String[] strArr, String str) {
        this.var3 = map;
        this.var2 = strArr;
        this.var1 = str;
    }
}

MyReceiver.java:

    public void onReceive(Context context, Intent intent) {
        Bundle extras = intent.getExtras();
        if (extras != null) {
            try{
                Serializable serializableExtra = intent.getSerializableExtra("userConfig");
            }
            catch(Exception e) {
                Log.i("ERROR", e.toString());
            }
        }
    }

这是该异常的当前输出: java.lang.RuntimeException:Parcelable在读取可序列化对象(名称= com.appA.UserConfig)时遇到ClassNotFoundException

0 个答案:

没有答案