1

アプリのコンテンツを共有するためのオプションを実装しています。ユーザーが共有ボタンを押すと、次のコードが実行されます。

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);
}

インテントに特別な追加機能を1つ設定しています。つまり、オブジェクトwishwitchがParcelableインターフェイスを実装しています。

このオブジェクトには、いくつかの追加情報が含まれています。ユーザーが共有可能なアプリから自分のアプリ(実際にコンテンツを共有している現在のアプリ)を選択した場合に、この情報を使用したいと思いますtext/plain

Parcableしかし、問題は、オブジェクトを含めると、他のすべての人気のあるアプリ(Facebook、Twitterなど)と組み込みアプリ(メッセージング)がクラッシュすることです。クラッシュするのは私のアプリケーションではなく、他のアプリがquit unexpectedlyエラーをスローしています。

SharingActivityこのアクティビティで知られていない追加の名前で自分に電話をかけても、クラッシュしません。それはその余分なものを無視します。

ウィッシュオブジェクトのソースコード

私は何か間違ったことをしていますか、それとも何ですか?Wish他のアプリが私のオブジェクトを知らないため、これは不可能ですか?

4

2 に答える 2

1

しかし、問題は、Parcableオブジェクトを含めると、他のすべての人気のあるアプリ(Facebook、Twitterなど)と組み込みアプリ(メッセージング)がクラッシュすることです。

クラス定義Parcelableがないアプリにカスタムオブジェクトを渡さないでください。Parcelable

他のアプリが私のウィッシュオブジェクトを知らないため、これは不可能ですか?

正しい。

代わりに、中央のデータモデルからを見つけるために使用できる識別子(文字列、intなど)を渡します。SharingActivityWish

または、カスタムを作成する代わりに、すべてのアプリに共通のクラス定義があるように、をWish使用しBundleて「願い」を表します。Bundle

于 2013-03-07T15:10:55.503 に答える
0

データをバンドルに入れて、意図的に送信することもできます。例えば:

Bundle b = new Bundle();
b.putParcelable("object_key", yourObject);
shareIntent.putExtra("bundle_key", b);
于 2016-04-11T06:41:24.823 に答える