Schreibrechte in Bilder Ordner

  • Hallo,


    ich blicke bei dem Filesystem auf Android nicht durch. Redundantes mounten etc.


    Ich habe eine Funktion eingebaut, welche Screenshots aufnimmt. Da ich ausm /data/data/meineapp/ nicht lesen kann wollte ich meine *.png's woanders ablegen. Am besten in einen allg. Bilder Ordner. Welchen Pfad gebe ich dann an?

  • Hier habe ich diesen Code gefunden:

    Java
    File storageDir = new File(
                        Environment.getExternalStoragePublicDirectory(
                                Environment.DIRECTORY_PICTURES
                        ),
                        "MyApp"
                );


    Dann versuche ich dort hereinzuschreiben: storageDir.getAbsolutePath() + "/test.png"


    Bekomme dann vom System:

    Code
    ERROR - DataWriterFile - /storage/emulated/0/Pictures/MyApp/test.png: failed to open this file
    ERROR - DataWriterAdaptor - open(): Opening data writer implementation failed
    ERROR - BitWriter - Opening data writer failed
    ERROR - ScreenShotFactory - Could not open file /storage/emulated/0/Pictures/MyApp/test.png

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> ist auch gesetzt.

  • Ok, anscheinend habe ich dort keine Permission. Ich versuche gerade eine einfache Textdatei reinzuschfreiben:

    Meldung: System.err: Fehlende Permission oder sd an pc gemountet? /storage/emulated/0/Pictures/MyApp/test.png.txt: open failed: EACCES (Permission denied)

  • Ich habe herausgefunden, dass es was mit den neuen Android 6 Runtime permissions zu tun hat. Nachdem ich die targetSdkVersion zurück auf 22 gesetzt hatte, konnte ich dort auch reinschreiben.


    heißt deine app "MyApp"?

    Ne das ist nur als Platzhalter für den Unterordner in "Pictures". Oder muss der Ordner dort genauso heißen wie meine App?

  • Achso, dachte schon du willst auf deinen Appordner zugreifen, dann wäre das nämlich nicht gegangen :P


    Zur Lösung deines Problems, gibt es zwei varianten.
    1. Du schreibst in den app ordner deiner app und brauchst keine permissions.
    2. Du schreibst es in einen Externen Ordner der nicht zu deiner App gehört.


    Du möchtest jetzt variante zwei nutzen. Vermutlich wirst du dazu aber in der Manifestdatei eine Permission benötigen.
    android.permission.WRITE_EXTERNAL_STORAGEAb API23 musst du die Permissions auch zur Laufzeit überprüfen.Dazu solltest du dir diesen Link durchlesen: http://developer.android.com/training/permissions/index.html

Jetzt mitmachen!

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