导读:本文说明系统发送广播的部分流程,如何利用Intent查找到对应接收器。我们依然只关注接收器的排序问题

这篇文章主要是针对我前两篇文章

android安全问题(四) 抢先开机启动 - 结果篇

android安全问题(五) 抢先拦截短信 - 结果篇

现在给出第二步分的分析

下面就来看看发送广播的流程

Context中的sendBroadCast函数的实现是在ContextImpl中,和发送广播相关的有如下六个函数

void android.app.ContextImpl.sendBroadcast(Intent intent)

void android.app.ContextImpl.sendBroadcast(Intent intent, String receiverPermission)

void android.app.ContextImpl.sendOrderedBroadcast(Intent intent, String receiverPermission)

void android.app.ContextImpl.sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

void android.app.ContextImpl.sendStickyBroadcast(Intent intent)

void android.app.ContextImpl.sendStickyOrderedBroadcast(Intent intent, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)

可以分为3组:1普通广播;2Ordered广播;3Sticky广播

不论哪种,最后都会由ActivityManagerService处理

Java代码 复制代码 收藏代码
  1. private final int broadcastIntentLocked(ProcessRecord callerApp,
  2. String callerPackage, Intent intent, String resolvedType,
  3. IIntentReceiver resultTo, int resultCode, String resultData,
  4. Bundle map, String requiredPermission,
  5. boolean ordered, boolean sticky, int callingPid, int callingUid)
private final int broadcastIntentLocked(ProcessRecord callerApp,        String callerPackage, Intent intent, String resolvedType,        IIntentReceiver resultTo, int resultCode, String resultData,        Bundle map, String requiredPermission,        boolean ordered, boolean sticky, int callingPid, int callingUid)

以第一种情况为例,流程图大概是这个样子的

ordered和sticky用来区分上面3组广播

更多相关文章

  1. android studio中svn的使用(关联svn、svn提交代码,分支管理等)
  2. 卜若的代码笔记系列-unity系列-第三章:android交互之android stud
  3. Android社交类APP动态详情代码实现通用模板
  4. 在 Android 中调用二进制可执行程序(native executable )-- 在代码
  5. Android旅游APP类项目源代码
  6. Android碎碎念 -- 性能测试,适用于Android Studio的代码审查和性
  7. 对系统学习与写博客的看法——学完《第一行代码》有感
  8. Android开发——纯JAVA代码方式界面设计
  9. GDB调试Android代码——环境搭建及调试过程

随机推荐

  1. (2) Android中Binder调用流程 --- Binder环
  2. 曼妙琳珑心 Android(安卓)面试题(2)
  3. Android普及入门
  4. Android通讯录数据库介绍与基本操作(增删
  5. android 2.3 从零开始学习—环境的搭建以
  6. Android(安卓)M 新的运行时权限开发者需
  7. [Android] Android进程和线程模型
  8. Android通讯录数据库介绍与基本操作(增删
  9. 如何成为一个更好的Android开发者:30+个
  10. 【幻灯片分享】Android音频口数据通信开