FileProvider 调用系统相机拍照 出现on a null object reference的问题
16lz
2021-01-26
开发过程中需要调用系统照相机拍照并裁剪
对于系统调用相机拍照并保存有点忘记了,于是就直接拿同事的套上用了,结果从相册选中没有问题,但是通过相机拍照却出现了这个问题
‘android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)’ on a null object reference
发现错误所在代码
uri = FileProvider.getUriForFile(UserInfoSetImgActivity.this, BuildConfig.APPLICATION_ID + ".provider",file);
查看该方法
public static Uri getUriForFile(@NonNull Context context, @NonNull String authority, @NonNull File file) { final PathStrategy strategy = getPathStrategy(context, authority); return strategy.getUriForFile(file); }
Debug了下,发现file也不是为空,context也没有问题,那就是authority有问题了
在该方法的上面看到关于这个参数的解释
@param authority The authority of a {@link FileProvider} defined in a
{@code } element in your app’s manifest.
##需要在Manifest文件定义好FileProvider
<provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" /> </provider>
resource下面的定义文件路径
<?xml version="1.0" encoding="utf-8"?><paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-path name="external_files" path="."/>paths>
name可以为其他几个值,这里是设置的是文件保存路径
其中 android:authorities 定义的内容必须和上面参数的一样 否则就会报错
运行一下 果然正常了
总结
其实还是FileProvider没有配置好的问题,配置好就没问题了
8.31更新
一下子过去小半年了,又遇到这个小错误,建议android:authorities 用
BuildConfig.APPLICATION_ID + “.provider”
这样移植代码的时候就不会出现问题也不需要再改了
第一篇博客 记录下日常遇到的坑
更多相关文章
- android_5 修改一个textview中的字符串的颜色
- 关于 android 的JNI的java 调用 C和 C 调用JAVA(2)
- 自定义按比例显示的ImageView
- Android(安卓)Studio App 播放工程内部音乐文件
- android studio 导入 Launcher2 模块,并编译运行
- APK 本地化和去广告
- Setup Android(安卓)Studio
- ActionBarSherlock使用教程
- android ERROR:Unknown option '--no-crunch'