Öffnen von Bildern aus einem Ordner in der Galerie
Ich das öffnen will alle Bilder aus einem bestimmten Ordner mit der Android-Galerie. Ich habe eine Lösung gefunden in einer alten Frage, aber es hat nicht funktioniert. Der code ist:
public class MainActivity extends Activity implements MediaScannerConnectionClient {
public String[] allFiles;
private String SCAN_PATH;
private static final String FILE_TYPE = "image/*";
private MediaScannerConnection conn;
private String folderName = "MyAPP";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.album);
File folder = new File("/sdcard/"+folderName+"/");
allFiles = folder.list();
SCAN_PATH = Environment.getExternalStorageDirectory().toString()
+ "/"+folderName+"/" + allFiles[0];
Button scanBtn = (Button) findViewById(R.id.button1);
scanBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
startScan();
}
});
}
private void startScan() {
if (conn != null) {
conn.disconnect();
}
conn = new MediaScannerConnection(this, this);
conn.connect();
}
public void onMediaScannerConnected() {
conn.scanFile(SCAN_PATH, FILE_TYPE);
}
public void onScanCompleted(String path, Uri uri) {
try {
if (uri != null) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setData(uri);
startActivity(intent);
}
} finally {
conn.disconnect();
conn = null;
}
}
}
Mit diesem code bin ich immer diese Fehlermeldung:
08-14 11:09:20.093: W/ContentResolver(25151): Failed to get type for: content://media/external/images/media/10471 (Unknown URL : content://media/external/images/media/10471)
08-14 11:09:20.093: E/JavaBinder(25151): *** Uncaught remote exception! (Exceptions are not yet supported across processes.)
08-14 11:09:20.093: E/JavaBinder(25151): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENT dat=content://media/external/images/media/10471 }
08-14 11:09:20.093: E/JavaBinder(25151): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
08-14 11:09:20.093: E/JavaBinder(25151): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
08-14 11:09:20.093: E/JavaBinder(25151): at android.app.Activity.startActivityForResult(Activity.java:3351)
08-14 11:09:20.093: E/JavaBinder(25151): at android.app.Activity.startActivityForResult(Activity.java:3312)
08-14 11:09:20.093: E/JavaBinder(25151): at android.app.Activity.startActivity(Activity.java:3522)
08-14 11:09:20.093: E/JavaBinder(25151): at android.app.Activity.startActivity(Activity.java:3490)
08-14 11:09:20.093: E/JavaBinder(25151): at com.example.camtest.MainActivity.onScanCompleted(MainActivity.java:64)
08-14 11:09:20.093: E/JavaBinder(25151): at android.media.MediaScannerConnection$1.scanCompleted(MediaScannerConnection.java:53)
08-14 11:09:20.093: E/JavaBinder(25151): at android.media.IMediaScannerListener$Stub.onTransact(IMediaScannerListener.java:60)
08-14 11:09:20.093: E/JavaBinder(25151): at android.os.Binder.execTransact(Binder.java:367)
08-14 11:09:20.093: E/JavaBinder(25151): at dalvik.system.NativeStart.run(Native Method)
Wäre es ok, wenn ich dieses code funktioniert, aber ich kann auch jede andere Idee, die Sie mir empfehlen
- 1. Versuchen Sie, mit
intent.setType("image/*");
nach der Erklärung desIntent
. 2. Lesen Sie hier eine etwas developer.android.com/reference/android/content/... 3. Erklären die Aktivität im Manifest (überprüfen Sie dies nur für den Fall). 4. Was sind die Arten von Bildern für die Galerie? - Wirst du bitte erläutern Sie Ihre Frage, was bedeutet "ich will öffnen Sie alle Bilder aus einem bestimmten Ordner mit der Android-Galerie."????
- Ich will öffnen Sie eine Galerie, aber nur mit Bildern in einem Ordner namens MyAPP
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code oben verwenden, öffnen Bild in der Galerie, aber nicht durch ein uri, um die Galerie zu öffnen.
Wenn Sie wollen, um Bilder in einem Ordner Galerie, die ich Ihnen vorstellen, um zu sehen,So öffnen Sie die Galerie zum anzeigen von Bildern in einem bestimmten Verzeichnis , hoffe es wird helfen.
Hier ist die eigentliche richtige Lösung:
Das Geheimnis besteht darin, den Eimer/album Ihre Ordner dargestellt. Die Eimer zeigen sich nach einer erfolgreichen MediaScan so sicher sein, alle Bilder/videos, die Sie zeigen möchte, werden zuerst gescannt, wie gezeigt, mehrere Male oben.
Nehmen wir an ich habe eine indizierte Ordner in /sdcard/myapp/myappsmediafolder:
Nun, dass wir das bucketId für unser album, das wir öffnen können, es mit einem einfachen Vorsatz.
Filter Video-Dateien:
Filter-Image-Dateien:
...
Kann ich überprüfen, ob dies funktioniert mit der integrierten Galerie-app. Kilometerstand kann variieren, Sie mit anderen apps wie Google Fotos.
Ich habe noch herauszufinden, wie man nicht zu filtern, Bilder/video, obwohl innerhalb der Galerie können Sie wählen Sie ein bestimmtes Album mit ohne filter.
Ich dachte, dies aus, indem man die AOSP source zu der Galerie-app.
Dieser Fragen ist auch ein Duplikat von: Galerie mit Ordner-filter
Versuchen Sie, diese Taste klicken Sie auf
});
und Sie können das ausgewählte Bild in Ihre Anwendung wie folgt
Im ersten block von code, den ich verwenden startActivityForResult(i, RESULT_LOAD_IMAGE); diese Rückkehr-Ergebnis namens "activity" und wir können dieses Ergebnis durch einen zweiten block von code, und legen ausgewählte Bild in Ihre Bildansicht
Habe ich abgerufenen Bilder-Pfad aus einem bestimmten Ordner und zeigt Sie auf Papierkorb-Ansicht. Der code ist in Kotlin, aber Sie können eine Idee aus
So, jetzt haben Sie eine Liste der Bilder Pfad, den Sie weitergeben können, um recycler-Ansicht mit recycler-Ansicht-Adapter. Ganz einfach 🙂