10

だから私は、ここで説明されている方法を使用して、ユーザーが Android アプリケーションで特定のメディアを選択できるようにしようとしています: Access pictures from Pictures app in my android app

ユーザーに提示するビデオまたは写真のいずれかを選択できるように見えるという事実を除いて、それはうまく機能します。両方を同時に選択することはできません。これを行う良い方法はありますか:

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);

ありがとう!

4

4 に答える 4

17

私はこれを数回使用しました。最良の方法は次のようなものです。

Intent mediaChooser = new Intent(Intent.ACTION_GET_CONTENT);
//comma-separated MIME types
mediaChooser.setType("video/*, images/*");
startActivityForResult(mediaChooser, 1);

これは完全に正確ではありませんが、私が使用したすべての機能で正常に機能しました。ユーザーのギャラリー内のすべての画像/ビデオのサムネイルリストを使用して、ギャラリー風のアクティビティが開きます。返されるインテントにonActivityResult()は、選択したメディアへのcontent://URIとなる「DATA」と呼ばれる追加のインテントがあります。

編集:おっと、 onActivityResult()に渡されるインテントで実際にgetData()を呼び出したい選択されたメディアへのURIを取得するには

于 2010-01-22T01:31:27.527 に答える
2

Kivy-最も簡単な方法は、メディアを選択してビデオに制限するインテントを作成することです。

Intent pickMedia = new Intent(Intent.ACTION_GET_CONTENT);
pickMedia.setType("video/*");
startActivityForResult(pickMedia,12345);

注-12345は、アプリがリクエストコールバックでリッスンする必要がある整数です。これにより、受信した情報を必要な場所に送信できます。

次に、そのインテントから返送される情報をリッスンする同じアクティビティを用意する必要があります。

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 12345) {
            if (resultCode == Activity.RESULT_OK) {
                Uri selectedVideoLocation = data.getData();

                // Do something with the data...
            } 

        }
    }

涼しい?

于 2010-07-14T17:42:08.350 に答える
1
intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 1);
于 2011-09-08T18:04:29.647 に答える