本文主要是介绍Couldn‘t find meta-data for provider with authority,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这个原因很简单,妈的,网上没有用太多相关的文章,自己mark一下,这个错误是检查AndroidManifest.xml,里面的
<providerandroid:name="androidx.core.content.FileProvider"android:authorities="包名.fileprovider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/file_paths" />
</provider>
尤其注意android:authorities="包名.fileprovider",注意大小写,
把带包名的数据 android:authorities="${applicationId}.fileprovider
现在10.0读取不到内存卡,需要额外再增加一行代码,别问为什么,只需要ctrl+c和ctrl+v
android:requestLegacyExternalStorage="true"
补充说明一下,
针对Android11,google官方的意思是:app卸载后,app相关的一切下载文件都要删除,这时还有两种解决方案,
第一:像
Environment.getDataDirectory()或者
Environment...相关的暂时不要用,要用getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).
getAbsolutePath(),尽量用getFilesDir()之类的api
第二,就是降低targetSdkVersion低于30就行
再次附上files_paths.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<paths>
<files-path
name="files"
path="." />
<cache-path
name="cache"
path="." />
<external-path
name="camera_photos"
path="." />
<external-files-path
name="external_file_path"
path="." />
<!--代表app 外部存储区域根目录下的文件 Context.getExternalCacheDir目录下的目录-->
<external-cache-path
name="external_cache_path"
path="." />
<external-path
name="beta_external_path"
path="." />
<external-path
name="beta_external_files_path"
path="." />
<!--配置root-path。这样子可以读取到sd卡和一些应用分身的目录,否则微信分身保存的图片,就会导致 java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/999/tencent/MicroMsg/WeiXin/export1544062754693.jpg,在小米6的手机上微信分身有这个crash,华为没有
-->
<root-path
name="root_path"
path="." />
</paths>
</resources><!--<root-path/> :代表设备的根目录new File("/")-->
<!--<files-path/> : 代表context.getFilesDir()-->
<!--<cache-path/> : 代表context.getCacheDir()-->
<!--<external-path/> : 代表Environment.getExternalStorageDirectory()-->
<!--<external-files-path/> : 代表context.getExternalFilesDirs()-->
<!--<external-cache-path/> : 代表getExternalCacheDirs()-->
<!--path节点支持name和path两个属性,配置了path属性就相当于在相应路径下子目录,-->
<!--https://www.jianshu.com/p/6463cfea9d7f-->
这篇关于Couldn‘t find meta-data for provider with authority的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!