android快捷方式,快捷方式是否可以包含应用程序对象?

android快捷方式,快捷方式是否可以包含应用程序对象?,android,shortcut,Android,Shortcut,我有一个注册创建快捷方式的应用程序,并为以我的一项活动为目标的快捷方式设置意图。作为额外费用。意图包含我的一个应用程序对象。。。即,应用程序中定义的类型的对象 当我添加快捷方式时,我会在下面粘贴异常。我的猜测是,问题在于主屏幕应用程序需要反序列化该意图,并且它对该类没有可见性。这意味着任何用于快捷方式的应用程序附加必须是标准的Android SDK对象 我遗漏了什么 E/AndroidRuntime( 141): Caused by: java.lang.RuntimeException: P

我有一个注册创建快捷方式的应用程序,并为以我的一项活动为目标的快捷方式设置意图。作为额外费用。意图包含我的一个应用程序对象。。。即,应用程序中定义的类型的对象

当我添加快捷方式时,我会在下面粘贴异常。我的猜测是,问题在于主屏幕应用程序需要反序列化该意图,并且它对该类没有可见性。这意味着任何用于快捷方式的应用程序附加必须是标准的Android SDK对象

我遗漏了什么

E/AndroidRuntime(  141): Caused by: java.lang.RuntimeException: Parcelable encounteredClassNotFoundException reading a Serializable object (name = org.jtb.nextvta.Route)
E/AndroidRuntime(  141):        at android.os.Parcel.readSerializable(Parcel.java:1890)
E/AndroidRuntime(  141):        at android.os.Parcel.readValue(Parcel.java:1761)
E/AndroidRuntime(  141):        at android.os.Parcel.readMapInternal(Parcel.java:1947)
E/AndroidRuntime(  141):        at android.os.Bundle.unparcel(Bundle.java:169)
E/AndroidRuntime(  141):        at android.os.Bundle.keySet(Bundle.java:256)
E/AndroidRuntime(  141):        at android.content.Intent.toUri(Intent.java:4868)
E/AndroidRuntime(  141):        at com.android.launcher.ApplicationInfo.onAddToDatabase(ApplicationInfo.java:103)
E/AndroidRuntime(  141):        at com.android.launcher.LauncherModel.addItemToDatabase(LauncherModel.java:1386)
E/AndroidRuntime(  141):        at com.android.launcher.Launcher.addShortcut(Launcher.java:740)
E/AndroidRuntime(  141):        at com.android.launcher.Launcher.completeAddShortcut(Launcher.java:670)
E/AndroidRuntime(  141):        at com.android.launcher.Launcher.onActivityResult(Launcher.java:378)
E/AndroidRuntime(  141):        at android.app.Activity.dispatchActivityResult(Activity.java:3625)
E/AndroidRuntime(  141):        at android.app.ActivityThread.deliverResults(ActivityThread.java:3220)
E/AndroidRuntime(  141):        ... 11 more
E/AndroidRuntime(  141): Caused by: java.lang.ClassNotFoundException: org.jtb.nextvta.Route
E/AndroidRuntime(  141):        at java.lang.Class.classForName(Native Method)
E/AndroidRuntime(  141):        at java.lang.Class.forName(Class.java:237)
E/AndroidRuntime(  141):        at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:2595)
E/AndroidRuntime(  141):        at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1848)
E/AndroidRuntime(  141):        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:852)
E/AndroidRuntime(  141):        at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2006)
E/AndroidRuntime(  141):        at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:956)
E/AndroidRuntime(  141):        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2289)
E/AndroidRuntime(  141):        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2243)
E/AndroidRuntime(  141):        at android.os.Parcel.readSerializable(Parcel.java:1884)
E/AndroidRuntime(  141):        ... 23 more
E/AndroidRuntime(  141): Caused by: java.lang.NoClassDefFoundError: org.jtb.nextvta.Route
E/AndroidRuntime(  141):        ... 33 more
E/AndroidRuntime(  141): Caused by: java.lang.ClassNotFoundException: org.jtb.nextvta.Route in loader dalvik.system.PathClassLoader@4376dac0
E/AndroidRuntime(  141):        at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
E/AndroidRuntime(  141):        at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
E/AndroidRuntime(  141):        at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
E/AndroidRuntime(  141):        ... 33 more

听起来不错。启动器尝试使用意图并从自定义类中点击
java.lang.ClassNotFoundException
异常。据我所知,没有办法将类“添加”到启动器“classpath”中

两个想法:

尝试将应用程序对象“序列化”为字符串(或字节数组)。它不必是正式的Java序列化,它可以是一种简单的字符串格式,您可以在应用程序实例之间进行转换。然后将字符串存储在intent中,并在接收活动上处理字符串intent


或者,在intent中单独存储应用程序对象的实例变量(假设ivar是原语和/或标准对象,如
String
)。

否。intent不能包含自定义对象。是的,我就是这么做的,利用了捆绑到SDK中的json包。活动可以尝试获取真实对象或序列化表单。