您好,由于 FileProvider 导致 NPE,我目前在启动 Intent 时遇到错误。我按照提供的步骤 here但我仍然遇到错误:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.PackageItemInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference
我也不确定这里是否使用了 provider_paths.xml。到目前为止,这是我的代码:
list :
<application>... <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></application>
资源/xml:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
代码:
Uri uri=FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID+".provider", file);
本身似乎是这里错误的原因。
最佳答案
BuildConfig.APPLICATION_ID 应该返回你的包名,然而,在我的例子中它返回了“android.support.v4”。我考虑使用 getPackagename(),它会工作得很好!
所以只是改变
FileProvider.getUriForFile(this,
BuildConfig.APPLICATION_ID + ".provider", file);
到:
FileProvider.getUriForFile(this,
getPackagename() + ".provider", file);
关于android - FileProvider NPE 空对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44818409/