为AppShortcut Intent Android传递序列化对象

时间:2017-10-23 17:54:36

标签: java android android-intent android-8.0-oreo android-appshortcut

我正在尝试为我的项目创建应用程序快捷方式。我的项目涉及几个活动的碎片。应用程序快捷方式意图使用了PersistentBundle

以下是我的意图:

public static Intent getAppShortcutIntent(@NonNull Context context) {
    Intent intent = new Intent(context, MyActivity.class);
    intent.putExtra(MyActivity.EXTRA_FRAGMENT_TO_LAUNCH, getString(MyFragment.class));
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    intent.setAction(Intent.ACTION_VIEW);
    return intent;
}

这样做的方法是对String进行序列化和反序列化,然后返回Class对象。   我尝试使用ByteArrayOutputStream进行转换,如下所示:

   ByteArrayOutputStream bo = new ByteArrayOutputStream();
   ObjectOutputStream so = new ObjectOutputStream(bo);
   so.writeObject(object);
   so.flush();
   return new String(bo.toByteArray());

然后转换回来如下:

String serializedObject; // This is what is serialized above
byte[] b = serializedObject.getBytes();
ByteArrayInputStream bi = new ByteArrayInputStream(b);
ObjectInputStream si = new ObjectInputStream(bi);
return (Class<?>) si.readObject();

但是,这似乎不起作用。我正在将MyFragment.class转换为字符串并返回。但它更具体地抛出异常(Exceptionjava.io.StreamCorruptedException:无效的流标题:EFBFBDEF)    我在这里缺少什么?

0 个答案:

没有答案