, ben Dış Önbelleğindeki dosya için FileProvider nasıl ayarlanacağı dir Önbellek dir dosyası için
<cache-path
name="image"
path="image/"/>
FileProvider
Ama ayarlamak için xml bu ekleyebilir Dış önbellek Dir I depolama dosyası, ben rici alamayan eğer önbellek-yolu etiketi veya FileProvider.And'un ayarlanması gibi bir şey de yardımcı olmadı.
Bu benim Manifest dosyasıdır:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.tizi.quanzi"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
Bu xml/file_paths dosyasıdır:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<cache-path
name="image"
path="image/"/>
<external-path
name="image_external"
path="cache/image/"/>
</paths>
Ve bu benim Kod geçerli:
String RootPath = App.getApplication().getExternalCacheDir().getAbsolutePath();
String filePath = RootPath + "/image/" + fileName;
// done something there to save file
Intent shareIntent = new Intent();
Uri contentUri = FileProvider.getUriForFile(App.getApplication(),
App.getApplication().getPackageName(), new File(filePath));
App.getApplication().grantUriPermission(App.getApplication().getPackageName(),
contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
shareIntent.setData(contentUri);
shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
shareIntent.setType("image/*");
activity.startActivity(Intent.createChooser(shareIntent, "share image"));
Ve bu hatadır infomation:
/AndroidRuntime: FATAL EXCEPTION: main
Process: com.tizi.quanzi, PID: 27487
java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/0/Android/data/com.tizi.quanzi/cache/image/o9xygODHtdP6HXqsuUZghVCsBKTtY4FJgO1MpnmX.jpg
at android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:678)
at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:377)
at com.tizi.quanzi.tool.ShareImage.shareImage(ShareImage.java:67)
at com.tizi.quanzi.tool.ShareImage.shareImage(ShareImage.java:61)
at com.tizi.quanzi.adapter.GalleryAdapter$2.onClick(GalleryAdapter.java:119)
at android.support.v7.app.AlertController$AlertParams$3.onItemClick(AlertController.java:956)
at android.widget.AdapterView.performItemClick(AdapterView.java:310)
at android.widget.AbsListView.performItemClick(AbsListView.java:1145)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3042)
at android.widget.AbsListView$3.run(AbsListView.java:3879)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
dış-cache-path' ve 'dış-files-path' çelişmektedir' eksikliği gibi görünüyor developer.android.com/reference/android/support/v4/content/FileProvider.html. Bu süper sinir bozucu. – etherton
Çalışmak üzere 'harici önbellek yolu' ve 'harici dosya yolu' için destek libslerinin 24.2.0 veya sonraki sürümünü kullanmalısınız. – ashughes
Bu cevap benim günüm oldu, çok teşekkür ederim! ExternalCacheDir'i FileProvider ile paylaşması gereken diğer kişiler için - Bu çözümdür. – Yehonatan