绕过华为register too many Broadcast Receivers限制

前言

一个普通的app撑死也不会注册500个广播接收,但是开发android沙盒就不一样了,在沙盒上要跑很多app,非常容易超过这个限制。因此我公开这个技术是很有必要的。

register too many Broadcast Receivers

如何解决

框架抛出的异常当然是逆向框架层然后patch啰,至于如何逆向第三方厂商rom的框架层,请参见我的文章:Android逆向之逆向框架层

我已经逆向完了,不喜欢啰嗦,直接上代码:

public static void patchHWLoadedApk(Context context) {

if(HWLoadedApk.Class!=null&& (context.getApplicationContext()instanceofApplication)) {

Object packageInfo = ContextImpl.mPackageInfo.get(((Application) context.getApplicationContext()).getBaseContext());

if(packageInfo !=null) {

Object receiverResource = HWLoadedApk.mReceiverResource.get(packageInfo);

if(receiverResource ==null) {

return;

}

if(ReceiverResourceM.Class!=null) {

if(ReceiverResourceM.Class.isAssignableFrom(receiverResource.getClass())) {

String[] whiteList =  ReceiverResourceM.mWhiteList.get(receiverResource);

List arrayList =newArrayList();

arrayList.add(context.getPackageName());

if(whiteList !=null) {

for(inti =0;i < whiteList.length;i ++) {

arrayList.add(whiteList[i]);

}

}

ReceiverResourceM.mWhiteList.set(receiverResource,(String[]) arrayList.toArray(newString[arrayList.size()]));

}

}else if(ReceiverResourceLP.Class!=null) {

ReceiverResourceLP.mResourceConfig.set(receiverResource, null);

}

}

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,494评论 25 708
  • 书到用时方恨少 赶ddl的时候发现很多词已经憋不出来了 是时候开始写些什么了
    土不随风沉扬阅读 183评论 0 0
  • 亲爱的自己,今天有点累,接二连三的遇见了好多事情,以往的你早已暴跳如雷,因为眼里都是对方的缺点,而你今天从容淡定,...
    杰仔妈阅读 257评论 0 3
  • 看到五场黑,没心情起床,浪费早上一小时时间。以后起床后再看比分。 昨晚五黑,怎么办。肯定至少要坚持现有规模。松哥两...
    2017静静的夜空阅读 203评论 0 0