webentwicklung-frage-antwort-db.com.de

Android: Benutzer können Bilder oder Videos aus der Galerie auswählen

Ist es möglich, die Galerie so zu starten, dass Bilder und Videos angezeigt werden?

Vielen Dank

32
Asahi

Wählen Sie eine Audiodatei aus der Galerie:

//Use MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);

Videodatei aus der Galerie auswählen:

//Use MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI);

Bild aus der Galerie auswählen:

//Use  MediaStore.Images.Media.EXTERNAL_CONTENT_URI
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

Wählen Sie Mediendateien oder Bilder aus:

 Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/* video/*");
45
Elenasys

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
    }
}
37
Siavash

(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/*"});

19
Fen1kz
intent.setType("*/*");

Dies bietet dem Benutzer einen Dialog, funktioniert aber mindestens auf ICS. Wurde nicht auf anderen Plattformen getestet.

8
Maurycy

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
}
5
Pit0r

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.

1
arnodenhond

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/*");
0
KILA