话说解决问题和研究问题是两码事

网上那个的加壳方案,

mProviderMap 在

235行 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.4_r1/android/app/ActivityThread.java?av=f

在2.3 -4-4.2的手机上,获取到的这个map是空的 所以不会走到下面的循环里面去

但是4.4.4的上面他能获取到这个map里面有值的

而且他是这样是内容

android.app.ActivityThread$ProviderKey@5582bc23(5355): =====android.app.ActivityThread$ProviderClientRecord@41a77e88

但是在2.3-4.4.2的手机上 这个map是空的

这个map在前面的版本里是 HashMap 后面的是ArrayMap

要注意

所以在2.3-4.4.2的手机上不会进入map就没有那个 expected receiver of type android.content.ContentProvider, but got null 异常了

然而在4.4.4的手机上Map不为空,进入之后

有一个获取android.app.ActivityThread$ProviderClientRecord 的mLocalProvider 属性值 ,这个不知道为什么 在4.4.4的手机上就是空的

321行代码http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.4_r1/android/app/ActivityThread.java#ActivityThread.ProviderClientRecord

需要处理一下

然后在源码里找了好久 因为4.4.4的上map里有1个值,第二个map循环出来取这个值的时候 mLocalProvider空了,我就去源码找了半天,结果未果

后来发现 那个mLoacalProvider可以为空的,但是这个map还是要循环完的,

最终我只是想 应该 android.app.ActivityThread$ProviderClientRecord 到这里获取的时候可能 应该里面还有一系列的操作 保证程序能运行起来

这个问题 一开始以为是buildtools的问题,从 19.0.0 一直试到23.0.2 但是发现不行,在公司的是4.4.2 家里的是4.4.4的手机上 纠结了好几天

后来发现偏偏我的手机和公司的测试机都是4.4 但是一个是4.4.4 一个是4.4.2 恰好我在公司试的好好的以为4.4的没问题, 在家里就不行了

更多相关文章

  1. android sim卡 TelephonyManager类:Android手机及Sim卡状态的获取
  2. 【Android】Android实现截取当前屏幕图片并保存至SDCard
  3. Android设备唯一标识ID的获取
  4. Android(安卓)Studio 获取证书指纹SHA1
  5. android 获取文件的扩展名和去掉文件的扩展名
  6. Android的按键处理
  7. Android一键锁屏源码
  8. Android(安卓)Bitmap 相关
  9. android中获取文字的宽度

随机推荐

  1. 使用Python+PIL查看两张相似图形的差异
  2. eclipse中写python文件找不到
  3. openpyxl读取excel中公式的结果值
  4. caffe中各语言预处理对应方式
  5. Python 3基础教程1-环境安装和运行环境
  6. joblib跟踪进展。并行执行
  7. 如何停止Py_Initialise应用程序的崩溃?
  8. X和y有不相容的形状
  9. Cloud Pub / Sub Demo:403未授权用户执行
  10. 解决Linux下运行Python脚本显示“: 没有