Alle Dateien auf Gerät finden, Filter nach Typ

  • Hallo zusammen,


    ich weiß, ihr werdet diese Frage lieben, da sie sicherlich schon 100 mal da war, ich begründe weiter unten, wieso ich sie erneut stelle:


    Ich suche eine idiotensichere Möglichkeit, alle Dateien eines bestimmten Dateityps auf einem Android-Smartphone zu finden.
    Hierzu hatte ich folgende Vorgehensweisen:


    1. Buckets von Android ermitteln lassen via


    Jedoch funktioniert den Code nicht, wenn ich aus "EXTERNAL" ein "INTERNAL" mache. Ja, ich weiß, dass es sich trotz des Namens "EXTERNAL" um den INTERNEN Speicher handelt.
    Mein Problem dabei: in neuen Android-Versionen kann man SD-Karten als internen Speicher formatieren. Dieser wird dann aber weder mit "EXTERNAL_CONTENT_URI" noch mit "INTERNAL_CONTENT_URI" auf Buckets überprüft.
    In der App "Album" auf meinem HTC One M9 sehe ich 15 Buckets, der Code oben findet nur 12... :D
    BTW; "managedQuery" ist obsolet.


    2. Das ganze OHNE Buckets, sondern auf reiner Datei-Ebene. Der Vorteil: ich kann den Code universell einsetzen, wenn ich z.B. keine Bilder, sondern Dokumente suche. Denn hier kann ich einfach nach bestimmten Dateitypen filtern.
    Also gehe ich so vor:


    Ja, der Code ist eine simple Rekursion. Meine Problem:
    Rufe ich die Funktion mit dem Parameter "/" auf, welches bisher der Root-Ordner unter Android darstellte, so stürzt mein Android Studio ab, ohne Fehlermeldung, geht einfach komplett zu (somit stürzt auch die App auf dem Handy ab, wenn ich debugge).


    Rufe ich Sie mit zB. "/sdcard" auf, so funktioniert der Code zwar, er läuft aber EWIG. ich habe eine 128 GB SD-Karte, die ich als "internen Speicher" formatiert habe. Darauf sind aber nur einige dutzend Bilder (bzw. jpg-Dateien). Debugge ich manuell, so wird die Rekursion nur einige Male durchlaufen und alle Bilder werden gefunden.
    Lasse ich den Code aber einfach laufen (also ohne Breakpoints), so dauert es ca 15-20 Minuten... wieso auch immer. Pausiere ich in dieser Zeit die Ausführung im Debugger, so wird keine Zeile hervorgehoben, ich weiß also nicht, wo der Cursor gerade steht...
    Weiterhin weiß ich nicht, wie ich den "Root"-Ordner anspreche, um in einem Durchlauf das GANZE Gerät zu durchsuchen, also internen Speicher und, falls vorhanden, externen Speicher.



    Kann mir jmd einen Tipp geben bzw. einen Schubs in die richtige Richtung?
    Ich hätte natürlich nichts gegen funktionierenden Code oder Snippets.



    Wieso stelle ich diese Frage also erneut, obwohl es schon hunderte Themen zur Dateiverwaltung unter Android gibt?
    Alle Beispiele, Tutorials etc. die ich gefunden habe (Deutsch und Englisch) habe ich bisher unter versch. Geräten mit versch.
    Android-Versionen, Speicher-Konfigurationen etc. getestet. Jede Methode bzw. jedes Snippet funktionierte auf x/y Geräten, jedoch nicht auf allen.


    Wie gesagt mein Ziel ist es, das komplette Gerät nach Dateien eines bestimmten Dateityps zu durchsuchen.
    Ist das überhaupt möglich, ohne einen Seitenlangen Quellcode? Die App soll quasi universell einsetzbar sein.
    Anscheinend muss ich ja das alles beachten:
    - Android-Version?
    - SD vorhanden?
    - ist der externe Speicher evtl. ein USB-Stick (zB via OTG-Adapter)?
    - ist der externe Speicher als "interner Speicher" formatiert?
    - ist das Handy gerootet?



    Vielen Dank für eure Tipps und Lösungsvorschläge.

  • Nachtrag; Ich weiß nun, wieso die Rekursion 20 Min. dauert.
    TROTZ des Root-Pfades "/sdcard" durchläuft er diverse Pfade wie:


    /sys/bus/cpu/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu0/subsystem/devices/cpu6/subsystem/devices/cpu3/subsystem/devices/cpu6/subsystem/devices/cpu0/subsystem/devices/cpu5/cpuidle/state3/desc


    Leider verstehe ich nicht, wie das Programm von "/sdcard" auf "/sys" kommt, aber ich umgehe das ganze nun mit einer max. Rekursionstiefe von ... 10 oder 15...

  • Der Ordner /sdkard verweist nicht immer auf die externe sdkarte. Sondern meistens auf den internen Speicher der als sdkarte ins System eingebunden wird. Der hat auch viele symbolische Link's. Die externe Karte ist meistens unter /storage /... Zufinden

  • tatsächlich gab es einen Ordner "/sdcard/sys/"
    der Inhalt unterschied sich jedoch von dem Ordner "/sys/".
    Rätsel 1 geklärt.


    Da ich die SD-Karte als "internen Speicher" formatiert habe, tauchen am PC nicht mehr "interner speicher" und "SD-Karte" auf, wenn ich mein Handy anstecke, sondern nur noch "SD-Karte von Sandisk". Darauf finde ich aber ALLE Dateien meines Handys,
    also auch die, die ich nach "/sdcard" und "/storage" kopiert habe :D


    Somit ist meine Verwirrung komplett. Ich würd einfach gern ein Programm schreiben, das "alle" Fälle abdeckt... egal WO und WELCHER Speicher. intern oder extern, evtl. auch USB OTG etc.


    Ich recherchiere ja, doch bei jeder 5. Android-Version stellen sie das wieder um, bei versch. Herstellern ist es wieder ganz unterschiedlich... so ein Mist...

  • mit formatieren der sdkarte hat das nicht's zu tuhen eher mit dem mounten der Partitionen. Wie hast du das mit deiner sdkarte eigentlich gemacht?
    Wenn du wissen willst unter welchen Ordner deine Partitionen gemountet sind schaue in die fstab Datei . Bei Android glaube vold.fstab

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!