
安卓源码分析
文章平均质量分 83
安卓源码分析
每个片段都值得深深纪念、
这个作者很懒,什么都没留下…
展开
-
(O)Settings分析之主界面加载流程
1. 前言本篇主要是为了记录Settings主界面的加载流程,为以后深入分析和记录在Settings应用做准备2. 流程 2.1 Settings 文件分析 首先,我们要分析Settings应用主界面的加载工作,需要先确认哪个文件为此应用的主Activity,从AndroidManifest.xml文件中<activity-alias andro...原创 2018-07-31 20:57:17 · 2543 阅读 · 1 评论 -
(O)Settings分析之DrawerLayout布局分析
DrawerLayout是添加在v4包中的一个布局类Google官方对于DrawerLayout的解释如下:DrawerLayout acts as a top-level container for window content that allows for interactive "Navigation Drawer.drawer" views to be pulled out f...原创 2018-07-31 11:12:13 · 458 阅读 · 0 评论 -
ContentProvider分析(一)之TelephonyProvider的初始化
在Telephony分析系列中,我们分析过PhoneApp的启动,是通过ActivityThread中调用Instrumentation类的onCreate方法来逐步启动PhoneApp应用的,但是当我们在分析PhoneApp的时候,发现在PhoneGlobals的onCreate方法中,TelephonyProvider的数据库已经建立(在查找APN的相关数据的时候),那么TelephonyPr原创 2017-09-16 13:38:58 · 1447 阅读 · 0 评论 -
(M)Activity详解之setContentView
在写一个Activity的时候,经常会先调用setContentView方法来设置Activity的布局,那么setContentView中究竟做了什么呢?public void setContentView(@LayoutRes int layoutResID) { getWindow().setContentView(layoutResID); initWindowDeco原创 2017-01-14 14:28:27 · 547 阅读 · 0 评论 -
(O)Telephony分析之通话流程分析(三)拨打电话流程分析(下)
三.Call的建立和传送先来看下代码static void processOutgoingCallIntent( Context context, CallsManager callsManager, Intent intent) { ...... // 拨打电话状态依旧为语音通话 final int videoS原创 2018-01-15 15:22:58 · 2436 阅读 · 0 评论 -
(O)Telephony分析之通话流程分析(二)拨打电话流程分析(上)
拨打电话,是从通话的拨号盘开始的,而拨号盘的界面是在DialpadFragment,因此,需要从这个地方进行分析一.拨号盘界面拨号流程public void onClick(View view) { ...... if (resId == R.id.dialpad_floating_action_button) { view.performHapticFee原创 2018-01-12 17:46:54 · 4298 阅读 · 0 评论 -
(N)Telephony分析(七)之DataConnection建立
在前面,我们分析过DcTracker的初始化的时候,我们有看过,在DcTracker的构造方法中,调用有如下这个方法private void registerForAllEvents() { mPhone.mCi.registerForAvailable(this, DctConstants.EVENT_RADIO_AVAILABLE, null); mPhone.mCi.re原创 2017-09-15 15:19:19 · 3095 阅读 · 0 评论 -
(N)Telephony分析(六)之DcTracker的requestNetwork分析
在PhoneApp的初始化中,我们分析到,TelephonyNetworkFactory的初始化,最终会调用到DcTracker的requestNetwork方法private void onNeedNetworkFor(Message msg) { NetworkRequest networkRequest = (NetworkRequest)msg.obj; boolean原创 2017-09-14 23:17:01 · 1909 阅读 · 0 评论 -
(N)Telephony分析(五)之DcTracker的初始化
DcTracker对象的初始化,需要从前文中进行分析,我们来看看其的初始化PhoneFactory.javapublic static void makeDefaultPhone(Context context) { ...... for (int i = 0; i < numPhones; i++) { Phone phone = null;原创 2017-09-14 14:37:50 · 2461 阅读 · 0 评论 -
(N)Telephony分析(四)之PhoneApp初始化分析
从上一篇中,分析到,调用了PhoneApp的onCreate方法,从此进入了PhoneApp的世界,那么就需要看看其onCreate方法中究竟做了什么public void onCreate() { if (UserHandle.myUserId() == 0) { // We are running as the primary user, so sh原创 2017-09-13 21:43:35 · 1930 阅读 · 0 评论 -
(N)Telephony分析(三)之PhoneApp启动
此前,分析过,SystemServer的启动,那么接着上篇,继续分析PhoneApp的启动首先,SystemServer启动时,进入其的main函数SystemServer.java文件public static void main(String[] args) { new SystemServer().run();}private void run() { ......原创 2017-08-02 13:33:34 · 1921 阅读 · 0 评论 -
(N)Telephony分析(二)之SystemServer启动
已经了解了zygote的启动,那么接着zygote启动,往后继续分析zygote在启动的时候,启动的是一个进程,为/system/bin/app_process,而这个app_process的进程,是在app_main.cpp文件中启动的,查看其main函数frameworks/base/cmds/app_process/app_main.cpp文件int main(int argc,原创 2017-07-27 21:02:03 · 650 阅读 · 0 评论 -
(N)Telephony分析(一)之zygote进程启动
Android是基于Linux系统的,而init进程是Linux系统的第一进程,因此,需要分析zygote的启动,首先就需要查看init进程的启动/system/core/init/init.cpp文件int main(int argc, char** argv) { ...... const BuiltinFunctionMap function_map; Act原创 2017-07-27 17:18:47 · 682 阅读 · 0 评论 -
(M)SIM卡开机流程分析之显示名称加载
前面有说过,SIM卡的开机流程是从PhoneFactory.java文件中的makeDefaultPhone方法开始的,SIM的displayName也是从这部分开始的,接下来记录一下自己的研究成果public static void makeDefaultPhone(Context context) { synchronized (sLockProxyPhones) {原创 2017-04-27 17:50:32 · 3740 阅读 · 0 评论 -
(M)SIM卡开机流程分析之SPN加载
本篇仅以USIM卡为例进行代码分析从之前对于UiccController.java文件进行分析中,我们知道UiccController中创建了UiccCard,而在UiccCard中创建了一个UiccCardAppliaction对象,而在UiccCardApplication的构造方法中,调用了如下方法:UiccCardApplication(UiccCard uiccCard,原创 2017-04-20 15:11:32 · 1596 阅读 · 0 评论 -
(M)SIM卡开机流程分析之默认APN设置
近日,一直在研究,默认APN的设置当我们从代码和手机中看到,默认APN的显示是从content://telephony/carriers/preferapn的数据中查询到的,而这个是通过shared preference来保存的,当手机第一次插卡开机后,我们将preferapn.xml文件导出来后,我们发现其中已经写有值了,但是从TelephonyProvider.Java文件中,我们却没有发原创 2017-03-27 00:31:55 · 9882 阅读 · 0 评论 -
(M)SIM卡开机流程分析之SubscriptionController类分析
首先,看看google对于SubscriptionController类的说明/** * SubscriptionController to provide an inter-process communication to * access Sms in Icc. * * Any setters which take subId, slotId or phoneId as a par原创 2017-03-11 15:31:25 · 5145 阅读 · 0 评论 -
(M)SIM卡开机流程分析之DefaultPhoneNotifier类分析
SIM卡开机流程,之前我们已经了解由PhoneFactory类的makeDefaultPhone方法中开始,在这个方法中,新建了一个DefaultPhoneNotifier对象sPhoneNotifier = new DefaultPhoneNotifier();那么,先看看google对DefaultPhoneNotifier类的介绍/** * broadcast intents *原创 2017-03-11 14:07:51 · 1589 阅读 · 0 评论 -
(M)SIM卡开机流程分析之RIL类分析
今天,来简单看一下SIM卡开机流程中的另一个重要的类,RIL.java首先,进入RIL.java文件中/** * RIL implementation of the CommandsInterface. * * {@hide} */// Leo,需要注意这个地方,继承自BaseCommands,实现了CommandsInterface的接口public final class原创 2017-03-09 23:06:12 · 1868 阅读 · 0 评论 -
(M)SIM卡开机流程分析之UiccController类分析
看看这个方法,定义一个UiccController对象UiccController.make(context, sCommandsInterfaces);// 单例模式public static UiccController make(Context c, CommandsInterface[] ci) { synchronized (mLock) { if (mIn原创 2017-03-02 15:02:14 · 1301 阅读 · 0 评论 -
(M)SIM卡开机流程分析之TelephonyManager类分析
首先在PhoneFactory的makeDefaultPhone方法中,调用了TelephonyManager.getDefault方法int numPhones = TelephonyManager.getDefault().getPhoneCount();查看TelephonyManager的getDefault方法// Leo, 全局变量 private static Tel原创 2017-03-02 11:05:45 · 5591 阅读 · 0 评论 -
(M)SIM卡开机流程分析之TelephonyDevController类分析
查看PhoneFactory.java文件中的makeDefaultPhone方法中有如下代码 // create the telephony device controller. TelephonyDevController.create();查看TelephonyDevController.java文件,从google对于这个类的解释来看,/** * TelephonyDevCon原创 2017-03-01 15:48:35 · 1346 阅读 · 0 评论 -
(M)SIM卡开机流程分析之主线分析
首先,PhoneFactory.java中通过方法makeDefaultPhone方法创建Phone对象,以及其他的对象,看一下PhoneFactory.makeDefaultPhone方法: /** * FIXME replace this with some other way of making these * instances */ pub原创 2017-01-10 21:00:24 · 1853 阅读 · 0 评论 -
(M)getSystemService解析
经常看到有类似于如下的语句,之前不知道这个究竟是如何返回一个TelephonyManager对象的,今天简单地看了下,发现其实这个也没有太过复杂(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);主要是调用了Context的getSystemService方法public abstract Objec原创 2017-03-01 17:46:48 · 614 阅读 · 0 评论