android开发之多个provider的解决方法:

下面的报错针对android7.0及以上都是一个问题就是provider的authorities没有对上。

看下报错代码:

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 referenceat android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:604)at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:578)at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:416)at com.mchsdk.paysdk.utils.YhshUtils.install(YhshUtils.java:147)at com.mchsdk.paysdk.utils.YhshUtils.access$200(YhshUtils.java:53)at com.mchsdk.paysdk.utils.YhshUtils$1.onSuccess(YhshUtils.java:113)at com.lidroid.xutils.http.HttpHandler.onProgressUpdate(HttpHandler.java:218)at com.lidroid.xutils.task.PriorityAsyncTask$InternalHandler.handleMessage(PriorityAsyncTask.java:385)at android.os.Handler.dispatchMessage(Handler.java:106)at android.os.Looper.loop(Looper.java:193)at android.app.ActivityThread.main(ActivityThread.java:6669)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

出现上面问题的原因很多:我说下我遇到的

我这边是SDK有一份provider自己APP也有一份provide然后因为都是定义的android.support.v4.content.FileProvider虽然authorities不同但是经过我测试这样后者的provider会被覆盖,也就是说当后者的provider去查找authorities的时候查找的是前者的authorities导致找不到指定的路径就报错了,这种有多个provider的冲突问题解决办法非常简单

直接自定义Provider即可:

package com.xigu.zhenghesdk.demo;import android.support.v4.content.FileProvider;/*** @author Xiayiye5* 2020年8月5日11:09:51* 下面自定义FileProvider是为了解决游戏里面已定义了FileProvider的冲突问题* 如果你项目使用的最新androidX 库,FileProvider导入使用:androidx.core.content.FileProvider* 如果你使用的非androidX库,FileProvider导入使用:android.support.v4.content.FileProvider*/
public class XiaYiYe5FileProvider extends FileProvider {public XiaYiYe5FileProvider() {}
}

新建provider如上图:然后在清单文件汇总配置下即可:

<!--配置Android7.0保存文件的路径--><!--请将com.xigu.zhenghesdk.demo改成你自己的游戏包名--><providerandroid:name="com.xigu.zhenghesdk.demo.XiaYiYe5FileProvider"android:authorities="${applicationId}.xiayiye5"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/apk_paths" /></provider>

个人建议:

1.上图代码中的authorities这个值一定要做到唯一不要和别的provider的authorities名字一样

2.上图中的resource资源路劲也尽量保持名字不重复例如我下载apk路劲定义的名字叫apk_paths

3.上图authorities的值一定要和你安装apk的值一致否则报错如下图一致:

XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager,相关推荐

  1. Android doc译文|Building Apps with Content Sharing|Sharing Simple Data

    Sharing Simple Data One of the great things about Android applications is their ability to communica ...

  2. Android小项目之--应用解析 Content Provider-内容提供商(附源码)

    上篇 SQLite 的文章讲述了 Andriod 系统的数据库存储读写,本篇将深入解析在 Android系统中如何共享不同应用的数据. 为什么需要 Content Provider? 在 Androi ...

  3. android开发 android.view.View.OnClickListener和android.content.DialogInterface.OnClickListener冲突...

    android开发中,在导入android.content.DialogInterface.OnClickListener 或者android.view.View.OnClickListener的其中 ...

  4. android工具am的用法,Android中AM、PM、dumpsys命令使用总结

    在平时开发中,通过命令行有时候能够快速的帮我们实现一些功能,这里对常用的命令做一些总结. 1.AM命令用法 1.1.简单介绍 am指令是 activity manager的缩写,可以启动Service ...

  5. android 命令使用详解,Android下pm 命令详解

    作者:Sam (甄峰) sam_code@hotmail.com Sam在看相关PackageManager代码时,无意中发现Android 下提供一个pm命令,通常放在/system/bin/下.这 ...

  6. android工具am的用法,Android am/pm命令用法

    am命令的参数介绍: usage: am [subcommand] [options] start an Activity: am start [-D] -D: enable debugging se ...

  7. Android 系统 (79)---Android应用程序安装过程解析

    Android应用程序安装过程解析 Android应用程序安装过程解析 1.程序安装的4大步骤 (1) 拷贝apk文件到指定目录 在Android系统中,apk安装文件是会被保存起来的,默认情况下,用 ...

  8. android开发桌面源码,android launcher 源码 自己开发启动桌面

    /* 5k桌面 源码 作者:基哥 AndroidManifest.xml重要配置: 壁纸背景(三选一): android:theme="@android:style/Theme.Wallpa ...

  9. android studio 反编译工具,android studio反编译工具jd-inteIIij

    Android Studio 自带了Java Bytecode Decompiler 对于第三方的jar只能反编译出其函数名 例如:andbase里的com.kfb.c.jar下的com.kfb.c下 ...

最新文章

  1. TensorFlow被曝存在严重bug,搭配Keras可能丢失权重,用户反映一个月仍未修复
  2. 如何简化Exchange 2007 OWA URL访问
  3. html的li浮动之后往下移动,多个li浮动后居中显示问题
  4. 深入理解Javascript之执行上下文(Execution Context)
  5. java委托机制教程_通过反射实现Java下的委托机制代码详解
  6. 计算机无法安装VC2015,win10 vc++2015一个或多个问题导致了安装失败如何处理
  7. 【牛客网-公司真题-前端入门篇】——百度2021校招Web前端研发工程师笔试卷(第一批)
  8. 把树莓派用于YAAW离线下载的Mass Storage U盘用虚拟目录建到Vsftpd的子目录里去
  9. 湘潭大学信息安全课作业答案4
  10. Multi-modality Latent Interaction Network for Visual Question Answering阅读笔记
  11. 越努力越幸福—2015年度总结
  12. H3C CAS 5.0 虚拟机备份与还原
  13. R语言广义加性模型GAMs分析温度、臭氧环境数据绘制偏回归图与偏残差图
  14. 引流是什么? 怎样学习引流?
  15. 服务器是干什么用的?
  16. 如何打开.pkl文件,查看.pkl文件里的内容(Python3.6)
  17. 电脑关不掉计算机窗口,电脑关不掉怎么办?
  18. Java高级 设计模式
  19. python中赋值“=”的理解
  20. 我走了phpchina

热门文章

  1. 学好单片机必须要了解的的8个电路设计
  2. Digital System Design_VHDL设计
  3. apk转换ipa在线转换工具_PDF 格式转换在线网站
  4. java三点确定圆弧_圆弧方向判断方法和三点确定一个圆的计算方法
  5. dw怎么做竖线_我花了5分钟,做了一份极“拉风”的PPT
  6. html去除分页符,Word如何取消分页符
  7. python爬贴吧回复内容_Python 基础语法+简单地爬取百度贴吧内容
  8. mysql search yum_mysql安装-yum方式
  9. Jmeter(二十五)Jmeter之系统函数
  10. 使用CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件