如何在 Android 中正确获取文件的 URI?
How to get URI for file correctly in Android?
我正在尝试获取这样一个文件的 URI:
Uri photoURI = FileProvider.getUriForFile(this,
"br.com.[blablabla].sgaconsultor",
createImageFile());
private File createImageFile() throws IOException {
// Create an image file name
String imageFileName = "registroFoto";
ContextWrapper cw = new ContextWrapper(getApplicationContext());
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
return File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
directory
);
}
我有一个文件提供者:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="br.com.[blablabla].blabla"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
而 xml 是:
<paths>
<files-path name="br.com.[blablabla].blabla" path="app_imageDir" />
</paths>
但是当我运行这段代码时,我总是得到这个错误:
java.lang.IllegalArgumentException:
但到目前为止运气不好...那么我该如何解决这个问题并获取我的文件的 URI?
非常感谢任何帮助!
So how can I fix this and get the URI for my file?
第 1 步:删除 Java 代码中无用的东西。
第 2 步:获取 Java 代码和 file_paths
资源进行匹配,因为 file_paths
表示文件路径必须在 getFilesDir()
下并且具有app_imageDir
在里面,而你的 Java 代码没有这些东西。
所以,试试这个:
private File createImageFile() throws IOException {
// Create an image file name
String imageFileName = "registroFoto";
File directory = new File(getFilesDir(), "app_imageDir");
directory.mkdirs();
return File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
directory
);
}
我正在尝试获取这样一个文件的 URI:
Uri photoURI = FileProvider.getUriForFile(this,
"br.com.[blablabla].sgaconsultor",
createImageFile());
private File createImageFile() throws IOException {
// Create an image file name
String imageFileName = "registroFoto";
ContextWrapper cw = new ContextWrapper(getApplicationContext());
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
return File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
directory
);
}
我有一个文件提供者:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="br.com.[blablabla].blabla"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
而 xml 是:
<paths>
<files-path name="br.com.[blablabla].blabla" path="app_imageDir" />
</paths>
但是当我运行这段代码时,我总是得到这个错误:
java.lang.IllegalArgumentException:
但到目前为止运气不好...那么我该如何解决这个问题并获取我的文件的 URI?
非常感谢任何帮助!
So how can I fix this and get the URI for my file?
第 1 步:删除 Java 代码中无用的东西。
第 2 步:获取 Java 代码和 file_paths
资源进行匹配,因为 file_paths
表示文件路径必须在 getFilesDir()
下并且具有app_imageDir
在里面,而你的 Java 代码没有这些东西。
所以,试试这个:
private File createImageFile() throws IOException {
// Create an image file name
String imageFileName = "registroFoto";
File directory = new File(getFilesDir(), "app_imageDir");
directory.mkdirs();
return File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
directory
);
}