So legen Sie FileProvider für die Datei im externen Cache-Verzeichnis fest

8

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%     
Qi Xingchen 13.12.2015, 07:18
quelle

3 Antworten

9

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.

%Vor%

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.

%Vor%

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.

    
Carlosph 05.02.2016, 09:25
quelle
4

Ab Support Library 24.2.0 können Sie Folgendes verwenden:

%Vor%

Weitere Informationen finden Sie in FileProvider-Dokumenten .

    
ashughes 21.11.2016 23:32
quelle
0

Folgende Konfiguration funktioniert für mich: Ich benutze

%Vor%

in meinem Code.

und mein Provider sieht so aus

%Vor%

mein Minsdk

%Vor%     
Uzair 08.04.2017 06:04
quelle

Tags und Links