1

我正在实施一个从我的应用程序共享内容的选项。当用户按下共享按钮时,将执行以下代码。

public static void openShareIntent(Context context, String text, Wish wish)
{
    Intent share = new Intent(Intent.ACTION_SEND);
    share.setType("text/plain");       
    share.putExtra(Intent.EXTRA_TEXT, text);
    share.putExtra("share_wish", wish);

    startIntent(context, share);
}

我正在为我的 Intent 设置一个特殊的额外功能,即对象wish女巫实现了Parcelable接口。

这个对象包含一些额外的信息。如果用户从可用应用程序中选择我的应用程序(实际共享内容的当前应用程序)进行共享,我想使用此信息text/plain

Parcable但问题是,当我包含我的对象时,所有其他流行的应用程序(Facebook、Twitter 等)和内置应用程序(消息传递)都会崩溃。崩溃的不是我的应用程序,其他应用程序正在抛出quit unexpectedly错误。

当我SharingActivity使用此 Activity 不知道的一些额外名称调用 my 时,它不会崩溃。它只是忽略了那个额外的。

Wish对象源代码

我做错了什么还是什么?这是不可能的,因为其他应用程序不知道我的Wish对象吗?

4

2 回答 2

1

但问题是,当我包含 Parcable 对象时,所有其他流行的应用程序(Facebook、Twitter 等)和内置应用程序(消息传递)都会崩溃。

永远不要将自定义Parcelable对象传递给缺少您的Parcelable类定义的应用程序。

这是不可能的,因为其他应用程序不知道我的 Wish 对象吗?

正确的。

相反,传递一个标识符(字符串,int等等),它SharingActivity可以用来Wish从你的中心数据模型中找到你的。

或者,不用创建自定义,而是Wish使用 aBundle来表示“愿望”,就像Bundle所有应用程序中的通用类定义一样。

于 2013-03-07T15:10:55.503 回答
0

您可以将您的数据打包并发送出去。例如:

Bundle b = new Bundle();
b.putParcelable("object_key", yourObject);
shareIntent.putExtra("bundle_key", b);
于 2016-04-11T06:41:24.823 回答