6 Stimmen

Der MIME-Typ images/* zeigt sowohl Bilder als auch Videos an.

Ich versuche, die Bilder von der SD-Karte mit Intent zu bekommen. Hier ist mein Code:

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Bild auswählen"), SELECT_PICTURE);

Wenn ich meine App auf einem Samsung-Gerät ausführe, werden Bilder zum Auswählen angezeigt. Aber wenn ich den gleichen Code auf einem Micromax-Gerät ausführe, werden Bilder und Videos angezeigt.

Ich möchte nur Bilder auswählen. Wie kann ich dieses Problem lösen?

2voto

Nitesh Kumar Punkte 5260

Ich habe dieses Problem gelöst, indem ich die Erweiterung der Datei überprüft habe, die ich empfangen habe, und wenn die Erweiterung der empfangenen Datei einer Videodatei-Erweiterung entspricht, zeige ich dem Benutzer einen Toast an, um nur Fotos auszuwählen.

Unten ist die Methode, die ich verwendet habe, um die Erweiterung der Datei zu erhalten

public static String getImageExtensionFromPath(String imagePath) {
    String[] imageNameArray = imagePath.split("/");
    String imageName = imageNameArray[imageNameArray.length - 1];
    String[] imageArray = imageName.split("\\.");
    String finalImageName = imageArray[1];
    return finalImageName;
}

1voto

Jaykumar Patel Punkte 25455

Fügen Sie dies in Ihre AndroidManifest.xml ein

Fügen Sie das intent-filter in Ihre spezifisch aufgeführte Aktivität ein. Überprüfen Sie dies Google Code

0voto

suomi35 Punkte 1068

Es scheint keinen garantierten Weg zu geben, nur Bilder zurückzugeben, indem man images/*. verwendet. Es liegt an den anderen Apps, ob sie würdigen, was zurückgegeben wird. Sie können also einfach den Benutzer auswählen lassen, was auch immer er will, und ihn dann informieren, wenn es kein Bild war, etc.

Nachdem ich die URI vom Intent zurückbekommen habe, verwende ich die folgende Methode, um zu erkennen, ob es sich um ein echtes Bild handelt, da sie auch funktioniert, wenn der Dateiname mehrere Punkte enthält (this.is.my.file.txt):

public static String getExtensionFromPath(String imagePath) { return imagePath.substring((imagePath.lastIndexOf(".") + 1), imagePath.length()); }

-1voto

Hashir Sheikh Punkte 1811

Entfernen

intent.setAction(Intent.ACTION_GET_CONTENT);

und initialisieren Sie das Intent-Objekt mit folgendem Code.

intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X