Ordner kann nicht auf externem Speicher auf Android erstellt werden
Mein Entwicklungstelefon ist einNexus 5
, LaufenAndroid 4.4.2
.
In meiner Anwendung versuche ich, einen Ordner auf externem Speicher zu erstellen, in dem Debuginformationen für meine Anwendung gespeichert werden. Grundsätzlich enthält es alle Befehle, die von der Anwendung ausgeführt werden. Wenn ein Benutzer auf ein Problem stößt, kann er mir die Informationen aus dem Debug-Ordner zur Analyse senden.
Ich habe zunächst versucht, eine Datei in den Ordner zu schreiben, aber beim Erstellen des Ordners ist ein Fehler aufgetreten. Zuerst habe ich benutztmkdir()
, dann bin ich weitergezogenmkdirs()
was auch nicht funktioniert hat.
ich habe<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
in meinem Manifest.
Hier ist der Code zum Erstellen des Ordners:
File folder = new File(Environment.getExternalStorageDirectory() + "/DebugData");
String path = folder.getPath();
if(!folder.mkdirs() || !folder.exists()){
Log.e(LOG_TAG, path + " failed");
} else {
Log.d(LOG_TAG, path + " succeeded");
}
Folgendes habe ich auch versucht:
//Check SD card state
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state) || !Environment.MEDIA_MOUNTED.equals(state)) {
Log.e(LOG_TAG, "Error: external storage is read only or unavailable");
} else {
Log.d(LOG_TAG, "External storage is not read only or unavailable");
}
Dies gibt zurück, dass der externe Speicher istnicht schreibgeschützt oder nicht verfügbar.
Ich habe auch verschiedene Wege ausprobiert, wie zFile folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Folder1");
Hier wurde es wirklich verwirrend.
Ich habe versucht, auf verschiedenen Handys zu entwickeln. Erstens packte ich einGalaxy S4 GT-i9505
LaufenAndroid 4.2.2
und es hat funktioniert. Ich konnte die Ordner erstellen und in sie schreiben. Dies zeigte mir, dass der Code funktionierte. Auch der Pfad, der durch Ausführen des Codes auf S4 und Nexus 5 zurückgegeben wurde, war derselbe.
Dann dachte ich, es kann Android-Version spezifisch sein. Also schnappte ich mir einenNexus 4
mitAndroid 4.4.2
und der Code arbeitete auch daran. Erstellte die Ordner und erlaubte mir, an sie zu schreiben.
Keines der Telefone ist gerootet und standardmäßig im Lieferumfang enthalten. Auf dem Nexus 5 gibt es keine speziellen Anwendungen oder Einstellungen, die zu Problemen mit den Berechtigungen führen könnten. Die Verbindung ist auf Media Device (MTP) eingestellt.
BEARBEITEN:
Ich sollte hinzufügen, dass ich Folgendes ausprobiert habe, was auch nicht funktioniert hat:
Schreiben einer Datei in das Stammverzeichnis des externen SpeichersErstellen Sie die Datei im Stammverzeichnis des externen Speichers und schreiben Sie daraufErstellen Sie einen Ordner in einem angegebenen Pfad und schreiben Sie eine Datei daraufErstellen Sie die Datei in dem angegebenen Pfad und schreiben Sie daraufIch bin verwirrt, was dies verursacht. Kann ich noch etwas testen oder ändern, um das Problem zu beheben?
EDIT 2:
Es stellte sich heraus, dass das Problem an der Indizierung lag.
Grundsätzlich haben mir alle anderen Geräte, auf denen ich getestet habe, erlaubt, die USB-Verbindung wiederherzustellen und die erstellten Dateien und Ordner anzuzeigen.
Aus irgendeinem Grund indiziert mein Nexus 5 die Ordner / Dateien nicht, obwohl sie existieren.
Ich habe eine andere Anwendung für den Dateiexplorer von Drittanbietern heruntergeladen und festgestellt, dass alle Ordner und Dateien vorhanden sind.
Um diese Ordner und Dateien über das USB-Debugging anzuzeigen, muss ich das Telefon neu starten, um sie neu zu indizieren. Dies scheint ziemlich ärgerlich zu sein, ist aber besser, als dass es überhaupt nicht funktioniert.
Vielen Dank.