Java 如何在Android中正确获取文件的URI?

Java 如何在Android中正确获取文件的URI?,java,android,image,storage,Java,Android,Image,Storage,我正在尝试获取如下文件的URI: Uri photoURI = FileProvider.getUriForFile(this, "br.com.[blablabla].sgaconsultor", createImageFile()); private File createImageFile() throws IOException { // Create an image fi

我正在尝试获取如下文件的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?

非常感谢您的帮助

那么我如何修复这个问题并获取文件的URI呢

步骤1:去掉Java代码中无用的东西

步骤2:让Java代码和
文件路径
资源匹配,因为
文件路径
说明文件路径必须在
getfiledir()下
并在其中包含
app\u 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呢

步骤1:去掉Java代码中无用的东西

步骤2:让Java代码和
文件路径
资源匹配,因为
文件路径
说明文件路径必须在
getfiledir()下
并在其中包含
app\u 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
    );
}