Heim >Java >Ich kann keine Verzeichnisse oder Dateien für meine Anwendung erstellen, obwohl ich über Berechtigungen verfüge

Ich kann keine Verzeichnisse oder Dateien für meine Anwendung erstellen, obwohl ich über Berechtigungen verfüge

王林
王林nach vorne
2024-02-22 13:28:14394Durchsuche

Der PHP-Editor Strawberry beantwortet häufige Fragen zur Java-Programmierung: Selbst wenn Sie über Berechtigungen verfügen, können Sie kein Verzeichnis oder keine Datei für die Anwendung erstellen. Dieses Problem kann bei Berechtigungseinstellungen des Betriebssystems, Dateipfadfehlern, bereits vorhandenen Dateien usw. auftreten. Durch Überprüfen des Dateipfads, Überprüfen der Betriebssystemberechtigungen und Sicherstellen, dass die Datei nicht vorhanden ist, können Sie dieses Problem lösen und sicherstellen, dass das Programm normal ausgeführt wird. Wenn Sie auf eine ähnliche Situation stoßen, können Sie auch die oben genannten Methoden ausprobieren, um zu sehen, ob sie Ihr Problem lösen können.

Frageninhalt

Ich habe eine App, die ich vor ein paar Jahren erstellt habe. Kürzlich habe ich es mit sehr wenigen Änderungen neu kompiliert, sodass ich das Ziel-SDK ändern und es trotzdem im Play Store auflisten konnte.

Es stellte sich heraus, dass dadurch die App auf einigen Telefonen (einschließlich meinem eigenen) grundlegend kaputt geht. Vor dem Hochladen habe ich es auf einem anderen Telefon getestet und es hat einwandfrei funktioniert (Android-Version 8.1.0). Auf meinem Telefon läuft Android 11 (funktioniert nicht).

Das Problem scheint in der Möglichkeit zu liegen, Dateien im internen Speicher zu erstellen und zu lesen, während der Schwerpunkt der Anwendung auf der Verwaltung einer einzelnen Datei liegt.

Mit dieser Funktion versuche ich ein Verzeichnis zu erstellen. Dies ist nur eine Testfunktion, die ich bei der Erstellung aufrufe, sie ist nicht Teil der Original-App:

public static void AttemptDirCreate(){
    String dirname = Environment.getExternalStorageDirectory().toString() + "/this_is_a_test";
    File dir = new File(dirname);

    System.err.println("Attempting to create directory: '" + dirname + "'");

    boolean make_result = false;
    if (!dir.exists()) {
        try {
            make_result = dir.mkdir();
        }
        catch (SecurityException se) {
            System.err.println("ERROR. Could not make dir. Reason: " + se.getMessage());
        }
    }

    if (make_result){
        System.err.println("MKDir result is true");
    }
    else {
        System.err.println("MKDir result is false");
    }

    if (dir.exists()){
        System.err.println("Dir has been created");
    }
    else {
        System.err.println("Was unable to create dir");
    }

}

Das Problem besteht darin, dass das Verzeichnis nicht erstellt wird und keine Ausnahme ausgelöst wird. Wenn ich in die Anwendungsinformationen gehe, sehe ich die Berechtigungen für Dateien und Medien.

Der Pfad zu dem Verzeichnis, das Sie erstellen möchten, lautet: „/storage/emulated/0/this_is_a_test“

Soweit ich weiß, ist das der richtige Weg. Die App hat mich bei der ersten Installation um Erlaubnis gebeten.

Warum kann das Verzeichnis nicht erstellt werden? Wie kann das Problem identifiziert und behoben werden?

Zur Klarstellung: Genau diese Funktion funktioniert auf Android 8.1.0, aber nicht auf Android 11. Ich bin mir nicht sicher, wie hoch der Grenzwert ist.

Problemumgehung

Sie können auf Android 11+-Geräten keine Dateien und Verzeichnisse im Stammverzeichnis des externen Speichers erstellen.

Verwenden Sie stattdessen eines der vorhandenen öffentlichen Verzeichnisse.

Wie DCIM, Bilder, Dokumente...

Das obige ist der detaillierte Inhalt vonIch kann keine Verzeichnisse oder Dateien für meine Anwendung erstellen, obwohl ich über Berechtigungen verfüge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen