android快捷方式,快捷方式 Intent 可以额外包含应用程序对象吗?

标签 android shortcut

我有一个注册 CREATE_SHORTCUT 的应用程序,并为针对我的一项 Activity 的快捷方式设置了一个 Intent 。作为额外的。Intent bundle 含我的应用程序对象之一......也就是说,我的应用程序中定义的一种类型的对象。

当我添加快捷方式时,我在下面粘贴了异常。我的猜测是问题在于主屏幕应用程序需要额外反序列化该 Intent ,并且它对该类不可见。这意味着快捷方式 Intent 的任何应用附加功能都必须是标准的 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

最佳答案

听起来不错。启动器尝试使用 Intent 并命中来自自定义类的 java.lang.ClassNotFoundException 异常。没有办法(据我所知)将类“添加”到启动器“类路径”。

几个想法:

尝试将您的应用程序对象“序列化”为字符串(或字节数组)。它不一定是官方的 Java 序列化,它可以是一种简单的字符串格式,您可以将其转换为应用程序实例或从应用程序实例转换。然后将字符串存储在 Intent 中,并在接收 Activity 上处理字符串 Intent 。

或者,将应用程序对象的实例变量单独存储在 Intent 中(假设 ivars 是基元和/或标准对象,如 String)。

关于android快捷方式,快捷方式 Intent 可以额外包含应用程序对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4777438/

相关文章:

.net - 将属性设置应用于 Visual Studio 中项目中的所有类似控件

android - webview 在右侧显示白条

android - 当收到来自 AdMob 的广告时,TableRow 中的 TextView 消失

java - 使 firebase 查询搜索不区分大小写

android - 从android向服务器发送多张图片

java - 如何在我的 Android 应用程序中集成反馈表单,当我单击注销按钮时应打开该反馈表单?

autocomplete - Sublime Text 2 自动完成快捷方式不起作用

Python 快捷方式

windows - 如何在 Windows 中通过命令行创建快捷方式?

python - 如何像在 R 中一样在 IDLE 中获取最后执行的命令?