【发布时间】:2016-12-30 01:07:11
【问题描述】:
为 Android N 编译我遇到了FileProvider 的问题。我需要让用户从图库中选择图像/用相机拍照,然后将其裁剪为正方形。
我已经设法实现了一个FileProvider 来使用相机拍摄图像,但是我在从图库中挑选图像时遇到了严重的问题。问题是在画廊中有很多来自不同地方的文件,例如我有例外:
java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/6133-3766/DCIM/100ANDRO/DSC_0035.JPG
所以问题是,我可以将什么放入 file_paths.xml 以访问/storage/ 中的任何位置。我不能依赖确切的路径,因为可能有来自 WhatsApp 和类似应用程序的图片,例如 WhatsApp 图像获取此路径:
/storage/emulated/0/WhatsApp/Media/WhatsApp Images/IMG-20160821-WA0000.jpg
我已经设法用空路径解决了:
<external-path name="external_storage" path=""/>
根据documentation.类似于Environment.getExternalStorageDirectory()
但仍然无法弄清楚如何处理存储在/storage/SOME_DIR/ 中的图像。请帮忙。
【问题讨论】:
-
你的应用的最小SDK版本是多少?
-
最小为 14,目标为 24
-
如果是 19,我认为 SAF(存储访问框架)将是您的解决方案。 developer.android.com/guide/topics/providers/… 和此处显示的演示:techotopia.com/index.php/…
-
另外,还有很多与此错误相关的问题。检查此搜索:google.co.in/…
-
裁剪的先决条件是你加载位图。位图的先决条件是从媒体存储上的正确“卷”中解析内容。 contentResolver 如何工作的详细信息因媒体源而异(例如:sdCard vs internalStore vs gallery)...developer.android.com/reference/android/provider/… 请参阅“getBitmap”...stackoverflow.com/questions/29803924/… contentResolve-to-bitmap 示例 IMO 你越来越近了
标签: android android-gallery android-fileprovider