Für die Datei in Cache dir, kann ich dies in XML hinzufügen, um FileProvider
zu setzen %Vor%Aber wenn ich Speicherdatei in External Cache Dir, kann ich nicht externe Cache-Pfad-Tag oder so etwas zu FileProvider.And
setzen %Vor%hat auch nicht geholfen.
Dies ist meine Manifest-Datei:
%Vor%Dies ist die xml / file_paths-Datei:
%Vor%Und das ist mein Code:
%Vor%Und das ist die Fehlerinformation:
%Vor% Aktualisieren :
Der Weg zur Support-Bibliothek 24.2.0 und höher ist, wie @ashughes in seiner Antwort sagt.
In dieser Version wurden der Implementierung von FileProvider.java , um auf die externen Dateien und Cache-Verzeichnisse verweisen zu können.
%Vor%Wenn Sie mehr darüber erfahren möchten, können Sie sich die vorgenommenen Änderungen ansehen Dieses Commit .
Ursprüngliche Antwort:
Ich hatte das gleiche Problem. Ich habe mir die Klasse FileProvider.java
angeschaut, und wie du schon sagtest, gibt es kein Tag für externes Cache-Verzeichnis, nur die vier unten.
Ich verwende das external-path
-Tag. Dieses Tag verweist auf das Stammverzeichnis des externen Verzeichnisses und nicht auf das Cache-Verzeichnis. Sie können also entweder den Rest des Pfades von dort zum Cache-Verzeichnis in path
angeben oder Sie können einen Punkt verwenden, der auf das Stammverzeichnis des externen Verzeichnisses zeigt.
Wenn du
benutzt hast%Vor%
Die Methode getFileForUri
hat geprüft, ob der Pfad der Datei mit /storage/emulated/0/cache/image/
beginnt, was nicht der Fall ist, da der Pfad Ihrer Datei /storage/emulated/0/Android/data/com.tizi.quanzi/cache/image/
ist. Und das ist der Grund, warum Sie die Ausnahme bekommen.
Ab Support Library 24.2.0 können Sie Folgendes verwenden:
%Vor%Weitere Informationen finden Sie in FileProvider-Dokumenten .
Tags und Links android android-intent