上一篇博客讲到拍照截图保存到本地,http://blog.csdn.net/qq_31428453/article/details/78423625
1.Android SD卡创建文件和文件夹失败
图片无法保存到SD卡,原因是:创建文件和文件夹的方法有问题,正确示范如下
String path1 = getExternalCacheDir().getAbsolutePath(); String path2 = getExternalFilesDir(null).getAbsolutePath(); String path3 = getFilesDir().getAbsolutePath(); String path4 = getCacheDir().getAbsolutePath(); String path5 =Environment.getExternalStorageDirectory().getAbsolutePath(); String path6 =Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES).getAbsolutePath();
File imagePath = new File(path2, "ee");
Log.i("getExternalCacheDir", path1);
Log.i("getExternalFilesDir", path2);
Log.i("getFilesDir", path3);
Log.i("com.getCacheDir.try", path4);
Log.i("getESDirectory", path5);
Log.i("com.example.try", path6);
11-03 13:15:36.746 24507-24507/com.example.mytry I/getExternalCacheDir: /storage/emulated/0/Android/data/com.example.mytry/cache
11-03 13:15:36.746 24507-24507/com.example.mytry I/getExternalFilesDir: /storage/emulated/0/Android/data/com.example.mytry/files
11-03 13:15:36.746 24507-24507/com.example.mytry I/getFilesDir: /data/user/0/com.example.mytry/files
11-03 13:15:36.746 24507-24507/com.example.mytry I/com.getCacheDir.try: /data/user/0/com.example.mytry/cache
11-03 13:15:36.746 24507-24507/com.example.mytry I/getESDirectory: /storage/emulated/0
11-03 13:15:36.746 24507-24507/com.example.mytry I/com.example.try: /storage/emulated/0/Pictures
xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android"> name="root_path" path="." />
private File createOriImageFile() { String time = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); File newFile = null; try { File imagePath = new File(getExternalCacheDir(), "demo"); imagePath.mkdirs(); newFile = File.createTempFile(time, ".jpg", imagePath); } catch (Exception e) { e.printStackTrace(); } return newFile; } }
配置root-path就ok了。
FileProvider无法获取外置SD卡问题解决方案 | Failed to find configured root that contains 这是通过设置root-path 解决的
从Android官方文档中没有找到FileProvider对外置SD卡的支持的任何说明,但是调试代码可以发现:
root-path
代表/
也就是Android设备的根目录,该目录下包含着手机内部存储器,外置SD卡等所有文件的目录。
然后我们允许程序,发现将path设置为root-path
解决了FileProvider无法使用外置SD卡的问题。
参考http://www.jianshu.com/p/121bbb07cb07
总结:也就是说,如果FileProvider如何获取SD卡创建文件夹,必须通过root-path,如果访问内存中的数据,可以通过其他路径如
注意坑!!!!!