0

こんにちは、Android用のアプリを開発している初心者です。ギャラリーから写真を選択して友達に送信できるwhatsappというアプリケーションがあります。同様に、ACTION_PICK インテントに応答する同様のアプリのアクティビティを作成しています。

getIntent() を使用して whatsapp からアクティビティへのインテントを受け取り、setResult().. を使用して結果を送り返すとしましょう。その間に、描画可能な画像リソースをアプリから whats アプリに挿入する方法を知りたいsetResult を介して、whatsapp がアプリでクリックしている画像を受け入れて、友達に送信できるようにします。

以下のコードは、developer.android.com からの参照です。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    // Get the intent that started this activity
    Intent intent = getIntent();
    Uri data = intent.getData();

    // Figure out what to do based on the intent type
    if (intent.getType().indexOf("image/") != -1) {
        // Handle intents with image data ...

       **// wanted to know what code must be entered here.** 


    } else if (intent.getType().equals("text/plain")) {
        // Handle intents with text ...
    }
}


// Create intent to deliver some kind of result data
Intent result = new Intent("com.example.RESULT_ACTION", Uri.parse("content://result_uri");
setResult(Activity.RESULT_OK, result);
finish();
4

2 に答える 2

1

最も簡単な方法は、@ wtsang02 が提案したものです。ファイルシステムに触れたくない場合は、他にもいくつかの方法があります。

  1. MemoryFileを使用します。次に、インテントで簡単に渡すことができるファイル記述子を取得できます (これこれを確認してください)。

  2. これはよりクリーンなアプローチだと思いますが、ベンチマークを実行して、それが機能するかどうかを確認する必要があります。Drawableからバイト配列を取得し、 Parcelableとして送信してから、 Drawableを byte[] から再構築できます。

    byte[] drawableBytes = [your byte array];
    ByteArrayInputStream is = new ByteArrayInputStream(drawableBytes);
    Drawable drw = Drawable.createFromStream(is, "drawable");
    
于 2013-01-18T17:19:11.457 に答える
1

画像が非常に大きくなる場合があるため、画像の受け渡しが遅くなることがあります。ハードディスクに保存し、ファイル パスをアクティビティに戻して、アクティビティで開くことができます。

于 2013-01-18T16:56:00.750 に答える