Android 操作\u使用自定义附加程序发送意图,导致其他应用程序崩溃
我正在实现一个从我的应用程序共享内容的选项。当用户按下共享按钮时,执行以下代码Android 操作\u使用自定义附加程序发送意图,导致其他应用程序崩溃,android,android-intent,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, tex
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);
}
我正在为我的意图设置一个特殊的额外选项,即objectwish
witch实现Parcelable
接口
此对象包含一些额外的信息。如果用户从可用的应用程序中选择我的应用程序(当前应用程序实际共享内容)以共享text/plain
,我希望使用此信息
但问题是,当我包含我的Parcable
对象时,所有其他流行应用(Facebook、Twitter等)和内置应用(消息传递)都会崩溃。崩溃的不是我的应用程序,而是其他应用程序抛出了意外退出
错误
当我用这个活动不知道的额外名称调用我的SharingActivity
时,它不会崩溃。它只是忽略了额外的
我做错什么了吗?
这是否因为其他应用程序不知道我的愿望
对象而不可能
但问题是,当我包含我的可包裹对象时,所有其他流行应用(Facebook、Twitter等)和内置应用(消息传递)都会崩溃
切勿将自定义的Parcelable
对象传递给缺少Parcelable
类定义的应用程序
这是不可能的,因为其他应用程序不知道我的愿望对象
对
相反,传递一个标识符(字符串,int
,无论什么),该标识符可用于SharingActivity
从中心数据模型中查找您的愿望
或者,不要创建自定义的愿望
,而是使用捆绑包
来表示“愿望”,因为捆绑包
在所有应用程序中都有一个通用的类定义
但问题是,当我包含我的可包裹对象时,所有其他流行应用(Facebook、Twitter等)和内置应用(消息传递)都会崩溃
切勿将自定义的Parcelable
对象传递给缺少Parcelable
类定义的应用程序
这是不可能的,因为其他应用程序不知道我的愿望对象
对
相反,传递一个标识符(字符串,int
,无论什么),该标识符可用于SharingActivity
从中心数据模型中查找您的愿望
或者,不要创建自定义的愿望
,而是使用捆绑包
来表示“愿望”,因为捆绑包
在所有应用程序中都有一个通用的类定义。您可以将数据放在捆绑包中,并有意发送。
例如:
你可以把你的数据放在一个包里,并有目的地发送它。
例如:
张贴日志。您的Parcelable
实现很有可能不正确,因此其他应用程序在尝试解组对象时崩溃。text/plain和Parcelable是否相同。。?我认为你做不到,LogCat里什么都没有。我确信其他应用程序无法解组对象,因为他们不知道。但他们甚至不应该尝试@我想也是这样。但我希望不是这样。看看这个,包裹是否在你的应用程序中工作并不重要。一旦你将意图发送出你的应用程序,你就跨越了流程边界,你需要提供适当的AIDL,以便其他流程可以解除对它的控制。在没有检查的情况下,我似乎记得Android试图在收到意图时解组额外的内容,因此可能会失败。发布日志。您的Parcelable
实现很有可能不正确,因此其他应用程序在尝试解组对象时崩溃。text/plain和Parcelable是否相同。。?我认为你做不到,LogCat里什么都没有。我确信其他应用程序无法解组对象,因为他们不知道。但他们甚至不应该尝试@我想也是这样。但我希望不是这样。看看这个,包裹是否在你的应用程序中工作并不重要。一旦你将意图发送出你的应用程序,你就跨越了流程边界,你需要提供适当的AIDL,以便其他流程可以解除对它的控制。在没有检查的情况下,我似乎记得Android试图在收到意图时解组额外的内容,因此它可能会在那里失败。Tnx。我刚刚测试了捆绑包版本,一切正常。我刚刚测试过,捆绑版工作正常。
Bundle b = new Bundle();
b.putParcelable("object_key", yourObject);
shareIntent.putExtra("bundle_key", b);