Ich habe in den FileUriExposedException Sachen, wo Sie versuchen, eine Datei zu senden: /// Uri zu einer anderen App (in diesem Fall die Kamera), und ich sollte stattdessen einen FileProvider verwenden (verursacht einen Absturz auf api 24 Nougat) .Unterstützt der FileProvider von Android tatsächlich externe Dateien?
In unserer App erzeugen wir eine Datei Kontext mit getExternalFilesDir(String)
Methode:
context.getExternalFilesDir("attachments");
Die FileProvider documentation führt mich in sein mit external-files-path
zu glauben, soll ich meine paths.xml
, wenn ich möchte, dass die Funktionalität das gleiche sein wie jetzt .
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path
name="attachments"
path="attachments/" />
</paths>
Aber nach ein paar mehr, fand ich ein paar Dinge googeln, die mich dort denken ist Probleme mit FileProvider oder zumindest FileProvider Dokumentation ...
- https://code.google.com/p/android/issues/detail?id=61170
- @commonsWare Antwort und Kommentar https://stackoverflow.com/a/30276915/921988
- Das README dieser aktiven Bibliothek, die besagt, dass es Unterstützung für
external-files-dir
https://github.com/commonsguy/cwac-provider#metadata-elements hinzufügt
- Auch bekomme ich gerade
java.lang.IllegalArgumentException: Failed to find configured root that contains ...
, aber das könnte durch etwas anderes verursacht werden.
So
- Bin ich recht in der Annahme sollte ich
external-files-path
verwenden, wenn ich passen wollen, wie meine App funktioniert zur Zeit? - Ist die Dokumentation/FileProvider wirklich defekt/falsch und ich sollte stattdessen etwas wie cwac-provider verwenden?
UPDATE
Für Vollständigkeit, wie @CommonsWare unten empfohlen, die 24.2.0-Version von support-v4
mit mir arbeitet.
Wow! Danke für die sehr schnelle und sehr hilfreiche Antwort! Ich werde 24.2 Support-v4 versuchen. Andererseits meinen Sie, dass es "Anhänge" nicht unterstützt, da das von mir angegebene Argument "String type" idealerweise eines der in der Dokumentation erwähnten sein sollte (beginnend mit 'DIRECTORY _...')? – Josh
@Josh: Ja, idealerweise ist es 'null' oder einer der angegebenen unterstützten Werte. * Wahrscheinlich * werden sie weiterhin willkürliche Strings unterstützen, da sie die Überprüfung hier nie implementiert haben, aber wir können nicht ausschließen, dass sie die Regeln durchsetzen werden. – CommonsWare
ah ok ich verstehe. Danke, dass du das gezeigt hast! Es ist etwas, was wir sehen werden. sehr hilfreiches Zeug! – Josh