日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager,

發布時間:2023/12/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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,的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。