Ich möchte, dass meine App die Anwendungsdatenbank auf der SD-Karte archiviert. In meinem Code überprüfe ich, ob das Verzeichnis canWrite()
existiert, und wenn nicht, wirf ein IOException
. In diesem speziellen Fall versuche ich, die Datenbankdatei in das Stammverzeichnis auf der SD-Karte zu kopieren, aber es wird eine ausgelöst IOException
. Wie kann ich die Berechtigung für einen Ordner / eine Datei ändern, um darauf schreiben zu können?
80
WRITE_EXTERNAL_STORAGE
wurde in 1.6 eingeführt, daher müssen Sie es in Ihre Anwendung aufnehmen, wenn Sie möchten, dass es vorwärtskompatibel ist.Die oben in Daves Antwort vorgeschlagene Technik ist sicherlich eine gute Entwurfspraxis, und ja, letztendlich muss die erforderliche Berechtigung in der Datei AndroidManifest.xml festgelegt werden, um auf den externen Speicher zugreifen zu können.
Die mono-artige Möglichkeit, die meisten (wenn nicht alle, nicht sicheren) "Manifestoptionen" hinzuzufügen, besteht jedoch in den Attributen der Klasse, die die Aktivität (oder den Dienst) implementiert.
Das Visual Studio Mono-Plugin generiert das Manifest automatisch. Es ist daher am besten, es nicht manuell zu manipulieren (ich bin sicher, dass es Fälle gibt, in denen es keine andere Option gibt).
Zum Beispiel:
[Activity(Label="MonoDroid App", MainLauncher=true, Permission="android.permission.WRITE_EXTERNAL_STORAGE")] public class MonoActivity : Activity { protected override void OnCreate(Bundle bindle) { base.OnCreate(bindle); } }
quelle