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

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对象,这不可能吗?

最佳答案

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


切勿将自定义Parcelable对象传递给缺少Parcelable类定义的应用。


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


正确。

而是传递一个标识符(字符串,int等),SharingActivity可以使用该标识符从中央数据模型中找到您的Wish

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

关于android - ACTION_SEND具有自定义额外功能的 Intent 会导致其他应用崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15274163/

10-12 04:19
查看更多