我正在实施一个从我的应用分享内容的选项。当用户按下共享按钮时,将执行以下代码。
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
时,它不会崩溃。它只是忽略了额外的。
我做错了什么或什么?
这是不可能的,因为其他应用程序不知道我的Wish
对象吗?
答案 0 :(得分:1)
但问题是,当我加入Parcable对象时,所有其他热门应用程序(Facebook,Twitter,...)和内置应用程序(Messaging)都会崩溃。
永远不要将自定义Parcelable
对象传递给缺少Parcelable
类定义的应用。
这是不可能的,因为其他应用程序不知道我的愿望对象?
正确。
相反,传递一个标识符(字符串,int
,无论如何)SharingActivity
可以用来从您的中央数据模型中查找Wish
。
或者,不是创建自定义Wish
,而是使用Bundle
来表示“愿望”,因为Bundle
在所有应用中都有一个共同的类定义。