#17981 java.lang.IllegalArgumentException
Failed to find configured root that contains /data/data/xxxxx/cache/xxx/Image/temp.jpg
出错堆栈
1 android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:712)
2 android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:401)
3 xxxx.fragment.MineFragment.void choseHeadImageFromCameraCapture()(MineFragment.java:407)
4 xxxxx.fragment.MineFragment.void access$600(xxxxx.fragment.MineFragment)(MineFragment.java:78)
5 xxxxx.fragment.MineFragment$6.void onSucceed(int,java.util.List)(MineFragment.java:343)
6 com.yanzhenjie.permission.DefaultRequest.void callbackSucceed()(DefaultRequest.java:157)
7 com.yanzhenjie.permission.DefaultRequest.void start()(DefaultRequest.java:110)
8 xxxxx.fragment.MineFragment.void startScanWithUnkonwPermission()(MineFragment.java:351)
9 xxxxxx.fragment.MineFragment.void onClick(android.view.View)(MineFragment.java:282)
10 xxxxx.view.dialog.MoreSelectDialog.void onClick(android.view.View)(MoreSelectDialog.java:65)
11 android.view.View.performClick(View.java:6597)
12 android.view.View.performClickInternal(View.java:6574)
13 android.view.View.access$3100(View.java:778)
14 android.view.View$PerformClick.run(View.java:25885)
15 android.os.Handler.handleCallback(Handler.java:873)
16 android.os.Handler.dispatchMessage(Handler.java:99)
17 android.os.Looper.loop(Looper.java:193)
18 android.app.ActivityThread.main(ActivityThread.java:6680)
19 java.lang.reflect.Method.invoke(Native Method)
20 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
Intent intentFromCapture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intentFromCapture.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
File file = new File(FileUtil.getInstance().getTempImgPath());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
mCameraTempUri = FileProvider.getUriForFile(getContext().getApplicationContext(), "xxxxx.fileProvider", file);
} else {
mCameraTempUri = Uri.fromFile(file);
}
if (mCameraTempUri != null) {
intentFromCapture.putExtra(MediaStore.EXTRA_OUTPUT, mCameraTempUri);
intentFromCapture.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
}
startActivityForResult(intentFromCapture, CODE_CAMERA_REQUEST);
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path path="." name="external_storage_root" />
</paths>
将xml文件中的 external-path 替换成 root-path,不过此时提示我 Element root-path is not allowed here
替换成下面的代码就可以了,要加一个resources标签即可
<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths>
<root-path path="" name="camera_photos" />
</paths>
</resources>