ACTION_SEND意图使用自定义附加内容导致其他应用崩溃

时间:2013-03-07 14:46:34

标签: android android-intent

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

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 object source code

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

1 个答案:

答案 0 :(得分:1)

  

但问题是,当我加入Parcable对象时,所有其他热门应用程序(Facebook,Twitter,...)和内置应用程序(Messaging)都会崩溃。

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

  

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

正确。

相反,传递一个标识符(字符串,int,无论如何)SharingActivity可以用来从您的中央数据模型中查找Wish

或者,不是创建自定义Wish,而是使用Bundle来表示“愿望”,因为Bundle在所有应用中都有一个共同的类定义。