Problem beim Speichern eines Bildes auf SD Card, welches von einer anderen APP als Ergebnis zurück gegeben wird

  • Nabend Leute, ich bin es schon wieder :)


    Habe diesmal das Problem dass ich aus meiner APP eine andere APP aufrufe, welche mir als Result ein Bild zurückgeben soll, welches ich dann auf meine SD Karte in den privaten Bereich meiner APP speichern will.


    1. ich erstelle eine Liste aller möglichen Apps die ein Bild zurückgeben können
    2. Beim Anklicken einer der Apps wird diese gestartet und mit dem Code 55 versehen.
    Habe hierfür als Test immer erst mal die Gallery benutzt.
    3. Nachdem das Bild ausgewählt wurde, komme ich in die Methode onActivityResult wo die Funktion aufgerufen wird, mit der auf der SD Card ein File anlegt wird, in welches ich die ausgewählte Datei gespeichert werden soll.


    Bis hier hin funktioniert noch alles ohne Probleme.


    An der Stelle


    Uri outputFileUri = Uri.fromFile(photoFile);
    data.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);


    wo die zurückgegebene Datei dann per putExtra in das File geschrieben werden soll, passiert dann aber gar nichts.
    Die Datei existiert auf der SD Card im entsprechendem Verzeichnis ist jedoch 0 kb groß -also leer.


    Habe auch schon debuggt:


    outputFileUri
    file:///storage/sdcard/Android/data/de.hotti.myapp/files/JPEG_19691231_190000_656819955.jpg


    data
    Intent { dat=content://media/external/images/media/78 (has extras) }


    Hat irgendwer einen Ratschlag. Ich habs mir auch echt nicht einfach gemacht, hab schon dutzende Code Snipets probiert und wirklich viel gelesen, aber irgendwie komme ich den entscheidenen Schritt einfach nicht weiter.... :(


    Hier meine Permissions:


    Code
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" /> 
        <uses-permission android:name="android.permission.READ_CONTACTS" />    
        <uses-permission android:name="android.permission.CAMERA" />    
        
        <uses-feature android:name="android.hardware.camera" android:required="false" />


    Hier mein Code dazu:


    onActivityResult



    Klasse ImagePickUpUtil


  • Soweit ich das sehe, muss nach http://developer.android.com/guide/topics/media/camera.html


    Das Output Extra mit dem Intent übergeben werden.
    Dann sollte er nicht nur die Datei anlegen ;)

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

  • Soweit ich das sehe, muss nach http://developer.android.com/guide/topics/media/camera.html


    Das Output Extra mit dem Intent übergeben werden.
    Dann sollte er nicht nur die Datei anlegen ;)


    Also ich habe das jetzt so verstanden, dass ich das output extra bevor ich den intent aufrufe, erst einmal auf den intent packen muss.
    Hoffe das hab ich richtig interpretiert. Habe nun meine Methoden folgendermaßen umgeschrieben:


    Im onActivityResult ist nun nur noch erstmal der AbfrageCode drinn und zum Test wenn alles gut geht ein setzen eines int Wertes zum Debuggen.


    in meiner Methoden zum Aufbau des Dialoges ist nun das Erstellen des TEMP FIles und die Ubergabe per output extra an
    das aufzurufene intent. Ich hoffe ich hab das so richtig verstanden!?




    Denn nun kommt er nicht mehr in der onActivityResult Methode über das if:
    if (resultCode == RESULT_OK && data != null)
    hinaus. Also irgendwas schein ich da entweder falsch verstanden zu haben oder ich habe jetzt einen anderen Fehler!?

  • Versuch mal nur die URI zu übergeben, ohne die Datei vorher zu erstellen.
    Ansonsten könntest du das nicht auf das Beispiel minimieren?, denn das macht doch das selbe oder?

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

  • War gestern etwas spät, habe aber noch Folgendes ausprobiert.
    Habe mal im Emulator AVD die Kamera emuliert / aktiviert und den Test diesmal mit der Kamera App wiederholt. Wie bereits geschrieben, habe ich immer
    nur Dateimangaer oder die Gallery als bildliefernde App benutzt, weil ich gelesen hatte, dass die Kamera App emuliert manchmal spinnt. TJA WAS SOLL ICH SAGEN..... diese funktioniert aber tadelos! Es wird das Bild zurückgegeben und an entsprechende Stelle gespeichert genauso wie ich es haben möchte.


    Unterstützt die Gallery App nicht MediaStore.EXTRA_OUTPUT ? Muss ich also doch komplett gesondert auf unterschiedliche Apps reagieren? Dachte ich habs schön einfach und sage in Android einfach egal welche App ein Bild zurückliefern kann, gebe ich in einer Liste aus und egal welches ich davon auswähle brauch ich nur als Reaktion:


    Uri outputFileUri = Uri.fromFile(photoFile);
    data.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);


    aufrufen und muss mich um nichts weiteres kümmern :) Zu einfach gedacht was :) ???

Jetzt mitmachen!

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