我正在尝试为我的项目创建应用程序快捷方式。我的项目涉及几个活动的碎片。应用程序快捷方式意图使用了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) 我在这里缺少什么?