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

时间:2017-01-13 17:48:39

标签: java android image storage

我正在尝试获取这样一个文件的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:Android: FileProvider IllegalArgumentException Failed to find configured root that contains /data/data/**/files/Videos/final.mp4

但到目前为止还没有运气...... 那么如何解决这个问题并获取我文件的URI呢?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

  

那么如何解决这个问题并获取我的文件的URI?

步骤#1:摆脱Java代码中无用的东西。

步骤2:获取Java代码和System.out.println(line); 资源以匹配,因为import opencv2表示文件路径必须位于file_paths下并且file_paths位于getFilesDir()它,你的Java代码没有这些东西。

所以,试试这个:

app_imageDir