Android FileProvider配置报错android.content.pm.ProviderInfo.loadXmlMetaData问题

Android FileProvider配置报错android.content.pm.ProviderInfo.loadXmlMetaData问题

项目中配置FileProvider,运行报错android.content.res.XmlResourceParser错误。强制更新,下载了最新的包之后打开报错:

java.lang.NullPointerException: Attempt to invoke virtual method ‘android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)’ on a null object reference

根据日志定位到错误是:

Uri contentUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID+".provider", apkFile);

FileProvider.getUriForFile();方法中fileprovider对象为空,因此推断出AndroidManifest.xml中provider节点下面的authority属性有问题,没有找到。既然authority不存在,肯定是配置有问题。

        <!--android:authorities="com.xxxx.xxxx.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/file_paths" />
        </provider>

还有就是在工具类哪里打开下载文件的方法,也统一用自己项目包下的BuildConfig.APPLICATION_ID  代替。

FileProvider.getUriForFile(context.getApplicationContext(), BuildConfig.APPLICATION_ID+”.provider”,new File(picturePath))

public synchronized static void openFile(Context context, String fileFullName) {
        File apkFile = new File(fileFullName);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
//            Uri contentUri = FileProvider.getUriForFile(context, "com.xxxx.xxxx.fileprovider", apkFile);
            Uri contentUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", apkFile);
            intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        } else {
            intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        }
        if (context.getPackageManager().queryIntentActivities(intent, 0).size() > 0) {
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }
    }

 

书到用时方恨少,纸上得来终觉浅。共勉!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114975.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 操作系统进程有若干个状态,若一个进程_进程和线程的概念

    操作系统进程有若干个状态,若一个进程_进程和线程的概念第二章进程管理-进程、线程进程的概念进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。(线程是调度的基本单位)程序:是静态的,是一个存放在磁盘里的可执行文件,是一系列指令的集合进程:是动态的,是程序的一次执行过程

    2025年8月28日
    6
  • mysql econnreset_Nodejs 套接字报错处理 Error: read ECONNRESET

    mysql econnreset_Nodejs 套接字报错处理 Error: read ECONNRESET错误信息:Error:readECONNRESETatTCP.onStreamRead(internal/stream_base_commons.js:162:27)出现上述情况一般是客户端关闭了socket连接导致的错误,这个错误会导致程序的异常退出解决办法:varpReq=http.request(options,function(pRes){cSock.writeHead…

    2022年6月17日
    84
  • ios在SQLite3基本操作

    ios在SQLite3基本操作

    2022年1月1日
    45
  • Parallel.For循环 和 Parallel.ForEach循环

    Parallel.For循环 和 Parallel.ForEach循环大多时候,我们的循环结构的每一次迭代依赖于上一次迭代的计算或行为。但是,有的时候又不是这样。如果迭代之间彼此独立,并且程序运行在多核处理器的机器上,如果能将不同的迭代放在不同的处理器上并行处理的话,将会受益匪浅。Parallel.For和Parallel.ForEach结构就是这样做的。一、Parallel.For1、Parallel.For方法有12个重载:publics…

    2022年7月19日
    18
  • 洛谷-最长公共子串「建议收藏」

    洛谷-最长公共子串「建议收藏」原题链接题目描述给定两个字符串str1和str2,输出连个字符串的最长公共子序列。如过最长公共子序列为空,则输出-1。输入描述:输出包括两行,第一行代表字符串str1,第二行代表str2。( 1<= length(str1),length(str2)<= 5000)输出描述:输出一行,代表他们最长公共子序列。如果公共子序列的长度为空,则输出-1。示例1输入1A2C3D4B56B1D23CA45B6A输出123456说明”123456″和“12C4B6”都是最长公共

    2022年8月8日
    5
  • jQuery css3鼠标悬停图片显示遮罩层动画特效

    jQuerycss3鼠标悬停图片显示遮罩层动画特效效果体验:http://hovertree.com/texiao/jquery/39/效果图:源码下载:http://hovertree.com

    2021年12月22日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号