私のプロジェクトでは、ボタンをクリックしてギャラリーを開き、画像またはビデオを選択してそれらのパスを取得できるようにする必要があります。
Intent i = new Intent(Intent.ACTION_PICK, Android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
上記のコードからギャラリーを開くことができますが、この場合は画像のみを選択できます。それで、ビデオを選ぶのも手伝ってください。前もって感謝します。
以下のコードは私の問題を解決しました
final Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("*/*");
startActivityForResult(galleryIntent, RESULT_LOAD_IMAGE);
次のスニペットを使用できます。
Intent mediaChooser = new Intent(Intent.ACTION_GET_CONTENT);
//comma-separated MIME types
mediaChooser.setType("video/*, image/*");
startActivityForResult(mediaChooser, RESULT_LOAD_IMAGE);
しかし、私はそれがICS以上でのみ機能すると思います
Android 6.0以上で "video/* image/"または "image / video/*"タイプを使用すると機能しません。最初のフィルターのみが認識されますこのコードを使用して問題を解決しました:
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("*/*");
photoPickerIntent.putExtra(Intent.EXTRA_MIME_TYPES, new String[] {"image/*", "video/*"});
startActivityForResult(photoPickerIntent, Constants.SELECT_PHOTO);
これは、画像/ビデオを選択するために使用するアプリをユーザーに尋ねます。
インテントの選択として次を使用する必要があります
Intent photoLibraryIntent = new Intent(Intent.ACTION_PICK, Android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
photoLibraryIntent.setType("image/* video/*");
これは私が知っている中で最高です......一度試してみてください...
final CharSequence[] options = {"Images", "Videos", "Cancel"};
AlertDialog.Builder builder = new AlertDialog.Builder(OpenGallery.this);
builder.setTitle("Select From...");
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
if (options[item].equals("Images")) {
Intent intent = new Intent(Intent.ACTION_PICK, Android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, 1);
} else if (options[item].equals("Videos")) {
Intent intent = new Intent(Intent.ACTION_PICK, Android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, 1);
} else if (options[item].equals("Cancel")) {
dialog.dismiss();
}
dialog.dismiss();
}
});
builder.show();
インテントを次のように変更します。
Intent i = new Intent(Intent.ACTION_PICK,
Android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
動画を取得しようとするときは、MediaStoreにその動画が適切であり、書いた画像ではないことを伝える必要があります。