android - FileProvider NPE 空对象引用

标签 android android-fileprovider

您好,由于 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/

相关文章:

android - android 项目中的 Java 文件夹和 src 为空

Android:使用 xml 布局的日期选择器

java - ListView 每个项目都有不同的布局

java - 我应该删除Android应用程序内存中的文件吗?

android - 在 Android 中定期刷新数据的最佳方法

android - Android 是否使用 NTP 同步时间?

android - 将相机图像保存到应用程序包文件夹

Android DownloadManager 和 FileProvider

Android 11 URI 使用情况(文件 ://content://)

java - Android:无法提供结果,无法找到具有权限的提供者的元数据