Android 将Firebase和FileProvider与构建变体一起使用

Android 将Firebase和FileProvider与构建变体一起使用,android,firebase,android-fileprovider,Android,Firebase,Android Fileprovider,我正在使用Firebase的构建变体,我的应用程序还需要使用FileProvider来共享要在第三方应用程序中打开的应用程序文件。 但是,当我试图在intent中发送URI时,应用程序崩溃,出现以下错误 错误:java.lang.IllegalArgumentException:未能找到包含/storage/emulated/0/Android/data/com.example.debug/files/Pictures/JPEG\u 20170919\u 113955\u 102027655.j

我正在使用Firebase的构建变体,我的应用程序还需要使用FileProvider来共享要在第三方应用程序中打开的应用程序文件。 但是,当我试图在intent中发送URI时,应用程序崩溃,出现以下错误

错误:java.lang.IllegalArgumentException:未能找到包含/storage/emulated/0/Android/data/com.example.debug/files/Pictures/JPEG\u 20170919\u 113955\u 102027655.jpg的配置根目录

这是我的配置

stringauthority=getString(R.String.authority\u provider);
Uri fileUri=FileProvider.getUriForFile(上下文、权限、文件);

  • 将文件提供程序添加到应用程序标记内部的AndroidManifest.xml中:

    
    

  • 文件路径.xml

    
    

由于
Firebase
要求使用2个应用程序ID在Firebase控制台中单独保存崩溃日志和分析

  • String:authority\u provider-添加到build.gradle(应用程序)中:

    构建类型{
    释放{
    ---
    applicationIdSuffix“com.example”
    resValue“string”、“authority\u provider”、“com.example.fileprovider”
    ---
    }
    调试{
    ---
    applicationIdSuffix'.debug'
    resValue“string”、“authority\u provider”、“com.example.debug.fileprovider”
    ---
    }
    }

  • 文件:将文件创建到ExternalFilesDir中,并将下载的数据保存到其中,然后使用相同的文件对象获取URI

    File storageDir=context.getExternalFilesDir(Environment.DIRECTORY\u图片);
    File File=File.createTempFile(文件名、文件扩展名、storageDir)

我尝试了以下解决方案,但不适用于我:

也关注这篇博文


name=“my_images”
。你有两次。对于不同的路径。不好的。请使用不同的名称并使用path=“”。谢谢您的帮助。但找到了更好更安全的解决方案。只需将文件_paths.xml的代码替换为以下内容: