我对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