我从getUriForFile方法中遇到异常问题,我在单击Button时尝试捕获图像但是当我执行该操作时应用程序崩溃。
我的日志是:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/XXXX/cache/JPEG_20161125_153048_-942097512.jpg
at android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:711)
at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:400)
at com.example.pierre.mycamera.MainActivity.onClick(MainActivity.java:71)
at android.view.View.performClick(View.java:4091)
at android.view.View$PerformClick.run(View.java:17072)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
在我的清单文件中,我写了这个:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="XXXX"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
file_path.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images" path="Android/data/XXXX/files/Pictures/" />
</paths>
我的onClick方法:
if(v.getId == ...){
Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
photoFile = createImageFile();
photoURI = FileProvider.getUriForFile(this, "com.example.pierre.mycamera", photoFile);
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(captureIntent,1);
}
createImageFile:
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
// Save a file: path for use with ACTION_VIEW intents
mCurrentPhotoPath = "file:" + image.getAbsolutePath();
return image;
}
问题出在哪里?我该如何解决?
提前致谢。