Intent liefert kein Ergebnis

  • Hoi,


    hab n kleines Problemchen, das nicht auf jedem Gerät auf tritt ... und zwar starte ich ein Intent um ein Video auf zu nehmen

    Java
    Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    	startActivityForResult(takeVideoIntent, ACTION_TAKE_VIDEO);


    und will dann in der onActivityResult die Uri abholen

    Java
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            videoUri = data.getData(); 
    }


    Auf dem S4 krieg ich über diesen Weg die Uri zum Video und kann damit weiter arbeiten. Auf dem Nexus 4 z.B. krieg ich null. Hat jemand eine Idee, wie ich das Problem anderweitig lösen bzw. umgehen kann?


    Gruß,
    Matze

  • Vermutung:
    Du schreibst auf den externen Speicher via getExternalFilesDir().


    Das Nexus 4 hat keinen externen Speicher. Daher speichert es nicht und Du bekommst auch keine URI zurück.


    Eventuell solltest Du den Speicherort dynamisch vergeben.


    Quasi

    Java
    File dataRoot = getExternalFilesDir(DIRECTORY_MOVIES);
    if(dataRoot == null) {
      dataRoot = getFilesDir();
    }

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Hoi,


    danke für die Antwort aber ich selbst speichere bis zu diesem Punkt noch überhaupt nichts. Ich ruf nur die Kamera-App auf und sag ihr gib mir die Uri zum Video, wenn du fertig bist mit der Aufnahme.
    Schritt für Schritt:
    Ich rufe meine Methode auf, die exakt den ersten Code-Abschnitt enthält. Intent erzeugen und mit startActivityForResult aufrufen. Meine App schließt sich, die Kamera-App geht auf, der User nimmt sein Video auf, schließt irgendwann die Kamera-App entweder durch OK oder Abbrechen und meine App resumed automatisch und der Callback onActivityResult wird aufgerufen. Da prüfe ich, ob der ResultCode OK ist und der RequestCode der Aktion entspricht, mit der ich mein Intent gestartet habe.
    Ist das der Fall hole ich mir mit data.getData() die Uri raus, die beim Nexus 4 eben null ist.


    In einem anderen Szenario hättest du vermutlich recht aber mein Problem hier lässt sich tatsächlich auf 3 Zeilen kürzen ...


    Das führt mich zu der Überlegung, ob ich zum Auslesen des internen Speichers eine eigene Berechtigung brauche. Hab nur WRITE_EXTERNAL_STORAGE, was READ_EXTERNAL_STORAGE automatisch mit einschließt, weil ich zu einem späteren Zeitpunkt das File kopiere und umbenenne.
    Find keine ähnliche Berechtigung, die ich zum Auslesen des internen Speichers angeben könnte ... gibts sowas überhaupt?



    Gruß,
    Matze

  • Dann liegt es wohl an MediaStore.ACTION_VIDEO_CAPTURE bzw. am Nexus.
    Siehe dazu StackOverflow.


    Ich kann mir gut vorstellen, dass das Problem nicht nur beim Nexus 7 eingebaut war. ;)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Hoi,


    danke für die Recherchen.
    Habs grad mal zam gesteckt und meinen Praktikant genötigt es zu testen aber selbes Problem. Muss mir das Teil wohl morgen mal von ihm leihen und den Logcat Output genau durchforsten und debuggen ...
    Vll. hab ich auch grad was übersehen, irgendwie hab ich heut kein Kopf mehr dafür -.-" Morgen schau ichs mir nochmal an und berichte dann nochmal.



    Gruß,
    Matze

Jetzt mitmachen!

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