Berechtigungen für eine App die ein Foto macht und anzeigt

  • Ich will eine App erstellen die ein Foto machen und speichern kann. Ich weis allerdings nicht genau was ich falsch gemacht habe aber funktioniert auf jeden Fall nicht: Hier der Code

    Vielen Dank schonmal im Vorraus:D

  • Hi Du könntest auch erst mal etwas erklären was den genau nicht geht. Dann brauchen wir hier nicht den gesamten Code durch arbeiten. Das du den Code gepostet hast ist schon mal gut aber bitte in Zukunft etwas genauer erklärt was nicht geht .


    Als erstens kein Statements im Klassenrumpf. Da werden nur primitive variablen initialisiert.

    • File bildfile = new File(Environment.getExternalStorageDirectory() + "/FotoApp/bild.png");
    • Uri bilduri = Uri.fromFile(bildfile);

    Gehört in die onCreat die Definition kann im Rumpf sein.

  • Frage wird den überhaupt die Kamera App geöffnet?
    Hast du auch die Perimission auch im manifest gesetz?


    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.camera" />
    die perimission für die Kammera solltest du auch zur Laufzeit anfordern.


    Erstelle das File erst nachdem du die Perimission angefordert hast.
    Und du musst auch den Ordner wenn nicht vorhanden auch erst erstellen.


    File imagesFolder = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "DCIM/Bilderordner");
    imagesFolder.mkdirs();


    Aber bitte in der onCreate nicht im Klassenrumpf.

  • Ich präzisiere meine Frage nochmal: Also das wäre mein Code ohne Permissions ich möchte gerne wissen wie ich die Permissions jetzt in diesen Code einbaue. :D Und im Manifest habe ich sie schon eingetragen


  • Ich habe das jetzt getestet aber meine App stürzt jetzt direkt wenn ich die Activity öffne ab

  • Ich hab den Fehler gefunden. Jetzt hab ich aber das Problem das ich zwar nach einer Permission gefragt werde aber der try part im code nicht ausgeführt wird

  • Aber wenn ich starte steht in Logcat das

  • Das ist doch ein Fehler ^^
    Ich gehe mal davon aus dein Gerät/Emulator ist Android 7+ (SDK 24+) ?
    Dort musst du einen FileProvider benutzen und kannst nicht einfach via File drauf zugreifen. Link zum Einbau, Hier noch ein Link (der passt schon direkt zu der Kamara-App)
    Du kannst zu Testzwecken auch erstmal einen Workaround einbauen:


    Java
    StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
    StrictMode.setVmPolicy(builder.build());

    Das kannst du mal in deiner Activity hinzufügen. Aber das ist definitiv nicht der saubere, richtige Weg, sondern nur um schnell zu testen!

  • HI
    Ich hatte dir ja schon gesagt das das Verzeichnis auch existieren muss. Wenn nicht musst du es auch erst erstellen.
    denn du willst auf einen Unter Ordner zugreifen der noch nicht existirt.
    da musst du immer mkdirs() machen.



    File dir = new File(Environment.getExternalStorageDirectory(), "FotoApp");
    dir.mkdirs();
    birdlife = new File(dir, “bild.png")
    bilduri = Uri.fromFile(bildfile);



    für die Url muss die Datei und der Ordner existieren.

  • Also ich hab die 2 zeilen in den on create Teil rein getan aber da passiert immer noch nicht das richtige

  • sieht so aus als ob du nicht die Permissoin für die Cammera hast


    09-07 13:20:28.333 9628-9628/com.jimdo.wachtel_web.fishcounter W/System.err: java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.sec.android.app.camera/.Camera launchParam=MultiScreenLaunchParams { mDisplayId=0 mFlags=0 } clip={text/uri-list U:file:///storage/emulated/0/FotoApp/bild.png} (has extras) } from ProcessRecord{dcf7483 9628:com.jimdo.wachtel_web.fishcounter/u0a308} (pid=9628, uid=10308) with revoked permission android.permission.CAMERA


    die datei müsste erstellt worden sein wenn das der log von anfang an ist. Kein fehler mehr bei der URL.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!