Ist es möglich, die Galerie so zu starten, dass Bilder und Videos angezeigt werden?
Vielen Dank
//Use MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
//Use MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
//Use MediaStore.Images.Media.EXTERNAL_CONTENT_URI
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/* video/*");
Sie starten die Galerie als solche:
Intent pickIntent = new Intent(Intent.ACTION_PICK, Android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
pickIntent.setType("image/* video/*");
startActivityForResult(pickIntent, IMAGE_PICKER_SELECT);
dann können Sie in Ihrer onActivityResult
überprüfen, ob Video oder Bild ausgewählt wurde, indem Sie Folgendes tun:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri selectedMediaUri = data.getData();
if (selectedMediaUri.toString().contains("image")) {
//handle image
} else if (selectedMediaUri.toString().contains("video")) {
//handle video
}
}
(EDIT: Ich benutze es nicht mehr, wir gingen zurück zu den beiden Optionen "Bild auswählen" und "Video auswählen". Das Problem war mit einem Sony-Handy. )
Das ist was ich benutze:
if (Build.VERSION.SDK_INT < 19) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/* video/*");
startActivityForResult(Intent.createChooser(intent, getResources().getString(R.string.select_picture)), SELECT_GALLERY);
} else {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[] {"image/*", "video/*"});
startActivityForResult(intent, SELECT_GALLERY_KitKat);
}
Der Schlüssel hier ist intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[] {"image/*", "video/*"});
intent.setType("*/*");
Dies bietet dem Benutzer einen Dialog, funktioniert aber mindestens auf ICS. Wurde nicht auf anderen Plattformen getestet.
Wenn Sie feststellen müssen, welche Art von Inhalt zurückgegeben wurde, können Sie den Inhaltsauflöser verwenden, um den MIME-Typ des zurückgegebenen Inhalts abzurufen:
if( data != null) {
Uri selectedUri = data.getData();
String[] columns = { MediaStore.Images.Media.DATA,
MediaStore.Images.Media.MIME_TYPE };
Cursor cursor = getContentResolver().query(selectedUri, columns, null, null, null);
cursor.moveToFirst();
int pathColumnIndex = cursor.getColumnIndex( columns[0] );
int mimeTypeColumnIndex = cursor.getColumnIndex( columns[1] );
String contentPath = cursor.getString(pathColumnIndex);
String mimeType = cursor.getString(mimeTypeColumnIndex);
cursor.close();
if(mimeType.startsWith("image")) {
//It's an image
}
else if(mimeType.startsWith("video")) {
//It's a video
}
}
else {
// show error or do nothing
}
CoolIris, das mit meinem Galaxien-Tab geliefert wurde, kann dies tun. Die cooliris auf meinem Acer betouch wird jedoch nicht: S Auf meinem Meilenstein können Sie die Galerie nicht mit einer Auswahl der Video-URL starten. Wenn Sie jedoch die Bilder-URL starten, können Sie ein Video auswählen und es wird wieder angezeigt auch eine Video-URL.
Sie müssen Folgendes als Kommissionierabsicht verwenden
Intent photoLibraryIntent = new Intent(Intent.ACTION_PICK, Android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
photoLibraryIntent.setType("image/* video/*");