我正在尝试发送Serializable对象从一个应用程序发送到另一个应用程序。
我的 Android 应用程序有一个可序列化的类
\n\npublic class MyClass implements Serializable\nRun Code Online (Sandbox Code Playgroud)\n\n然后我将其中的一个实例用于意图
\n\nMyClass myObject = new MyClass();\nintent.putExtra("payItem", myObject);\nintent.setAction("com.mypackage.some.action");\nRun Code Online (Sandbox Code Playgroud)\n\n当我调用startActiviy时
\n\nstartActivity(intent);\nRun Code Online (Sandbox Code Playgroud)\n\n我的应用程序崩溃了
\n\n5-16 11:09:24.738 30673-30673/? E/AndroidRuntime: FATAL EXCEPTION: main\nProcess: system:ui, PID: 30673\njava.lang.RuntimeException: Unable to start activity ComponentInfo{android/com.android.internal.app.ResolverActivity}: java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = com.mypackage.MyClass)\n at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)\n at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)\n at android.app.ActivityThread.-wrap11(Unknown Source:0)\n at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)\n at android.os.Handler.dispatchMessage(Handler.java:105)\n at android.os.Looper.loop(Looper.java:164)\n at android.app.ActivityThread.main(ActivityThread.java:6938)\n at java.lang.reflect.Method.invoke(Native Method)\n at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)\n Caused by: java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = com.mypackage.MyClass)\n at android.os.Parcel.readSerializable(Parcel.java:2956)\n at android.os.Parcel.readValue(Parcel.java:2742)\n at android.os.Parcel.readArrayMapInternal(Parcel.java:3058)\n at android.os.BaseBundle.unparcel(BaseBundle.java:257)\n at android.os.Bundle.getParcelable(Bundle.java:888)\n at android.content.Intent.getParcelableExtra(Intent.java:7734)\n at android.app.Activity.getReferrer(Activity.java:5398)\n at com.android.internal.app.ResolverActivity.getReferrerPackageName(ResolverActivity.java:554)\n at com.android.internal.app.ResolverActivity.onCreate(ResolverActivity.java:435)\n at com.android.internal.app.ResolverActivity.onCreate(ResolverActivity.java:331)\n at android.app.Activity.performCreate(Activity.java:7174)\n at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)\n at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)\n at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)\xc2\xa0\n at android.app.ActivityThread.-wrap11(Unknown Source:0)\xc2\xa0\n at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)\xc2\xa0\n at android.os.Handler.dispatchMessage(Handler.java:105)\xc2\xa0\n at android.os.Looper.loop(Looper.java:164)\xc2\xa0\n at android.app.ActivityThread.main(ActivityThread.java:6938)\xc2\xa0\n at java.lang.reflect.Method.invoke(Native Method)\xc2\xa0\n at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)\xc2\xa0\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)\xc2\xa0\n Caused by: java.lang.ClassNotFoundException: com.mypackage.MyClass\n at java.lang.Class.classForName(Native Method)\n at java.lang.Class.forName(Class.java:453)\n at android.os.Parcel$2.resolveClass(Parcel.java:2942)\n at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1616)\n at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521)\n at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1777)\n at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1354)\n at java.io.ObjectInputStream.readObject(ObjectInputStream.java:374)\n at android.os.Parcel.readSerializable(Parcel.java:2950)\n at android.os.Parcel.readValue(Parcel.java:2742)\xc2\xa0\n at android.os.Parcel.readArrayMapInternal(Parcel.java:3058)\xc2\xa0\n at android.os.BaseBundle.unparcel(BaseBundle.java:257)\xc2\xa0\n at android.os.Bundle.getParcelable(Bundle.java:888)\xc2\xa0\n at android.content.Intent.getParcelableExtra(Intent.java:7734)\xc2\xa0\n at android.app.Activity.getReferrer(Activity.java:5398)\xc2\xa0\n at com.android.internal.app.ResolverActivity.getReferrerPackageName(ResolverActivity.java:554)\xc2\xa0\n at com.android.internal.app.ResolverActivity.onCreate(ResolverActivity.java:435)\xc2\xa0\n at com.android.internal.app.ResolverActivity.onCreate(ResolverActivity.java:331)\xc2\xa0\n at android.app.Activity.performCreate(Activity.java:7174)\xc2\xa0\n at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)\xc2\xa0\n at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)\xc2\xa0\n at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)\xc2\xa0\n at android.app.ActivityThread.-wrap11(Unknown Source:0)\xc2\xa0\n at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)\xc2\xa0\n at android.os.Handler.dispatchMessage(Handler.java:105)\xc2\xa0\n at android.os.Looper.loop(Looper.java:164)\xc2\xa0\n at android.app.ActivityThread.main(ActivityThread.java:6938)\xc2\xa0\n at java.lang.reflect.Method.invoke(Native Method)\xc2\xa0\n at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)\xc2\xa0\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)\xc2\xa0\n Caused by: java.lang.ClassNotFoundException: Didn\'t find class "com.mypackage.MyClass" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/system/lib64, /system/vendor/lib64, /system/lib64, /system/vendor/lib64]]\n at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:379)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:312)\n at java.lang.Class.classForName(Native Method)\xc2\xa0\n at java.lang.Class.forName(Class.java:453)\xc2\xa0\n at android.os.Parcel$2.resolveClass(Parcel.java:2942)\xc2\xa0\n at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1616)\xc2\xa0\n at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521)\xc2\xa0\n at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1777)\xc2\xa0\n at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1354)\xc2\xa0\n at java.io.ObjectInputStream.readObject(ObjectInputStream.java:374)\xc2\xa0\n at android.os.Parcel.readSerializable(Parcel.java:2950)\xc2\xa0\n at android.os.Parcel.readValue(Parcel.java:2742)\xc2\xa0\n at android.os.Parcel.readArrayMapInternal(Parcel.java:3058)\xc2\xa0\n at android.os.BaseBundle.unparcel(BaseBundle.java:257)\xc2\xa0\n at android.os.Bundle.getParcelable(Bundle.java:888)\xc2\xa0\n at android.content.Intent.getParcelableExtra(Intent.java:7734)\xc2\xa0\n at android.app.Activity.getReferrer(Activity.java:5398)\xc2\xa0\n at com.android.internal.app.ResolverActivity.getReferrerPackageName(ResolverActivity.java:554)\xc2\xa0\n at com.android.internal.app.ResolverActivity.onCreate(ResolverActivity.java:435)\xc2\xa0\n at com.android.internal.app.ResolverActivity.onCreate(ResolverActivity.java:331)\xc2\xa0\n at android.app.Activity.performCreate(Activity.java:7174)\xc2\xa0\n at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)\xc2\xa0\n at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)\xc2\xa0\n at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)\xc2\xa0\n at android.app.ActivityThread.-wrap11(Unknown Source:0)\xc2\xa0\n at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)\xc2\xa0\n at android.os.Handler.dispatchMessage(Handler.java:105)\xc2\xa0\n at android.os.Looper.loop(Looper.java:164)\xc2\xa0\n at android.app.ActivityThread.main(ActivityThread.java:6938)\xc2\xa0\n at java.lang.reflect.Method.invoke(Native Method)\xc2\xa0\n at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)\xc2\xa0\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)\xc2\xa0\nRun Code Online (Sandbox Code Playgroud)\n\n实际上我的手机安装了两个应用程序,它们都注册了一个具有相同操作名称的活动\n
\n\n<activity\n android:name="com.mypackage.MyActivity"\n android:exported="true"\n >\n <intent-filter>\n <action android:name="com.mypackage.some.action"/>\n <category android:name="android.intent.category.DEFAULT"/>\n </intent-filter>\n </activity>\nRun Code Online (Sandbox Code Playgroud)\n\n我希望显示一个对话框让我选择应该启动哪个活动,但我刚刚收到上面的错误。如果我卸载其中一个应用程序,则不会发生错误并且它会按预期运行。
\n\n我的问题是
\n\n| 归档时间: |
|
| 查看次数: |
4498 次 |
| 最近记录: |