我正在实现一个共享应用程序内容的选项。当用户按下共享按钮时,将执行以下代码。
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/