1. 程式人生 > >Android系統工程模式啟動過程詳解

Android系統工程模式啟動過程詳解

這幾天在公司看 Android 系統裡的工程模式方面的程式碼。工程模式就是拿來測試手機的,普通使用者會開啟工程模式的很少,但作為一名 Android 手機的開發者來說,就必須知道了。其實就是在手機撥號盤輸入特定混合數字和 *# 的字串,進入特殊的介面。如輸入 *#06# 可以檢視手機IMEI號,*#*#4636#*#*  可以檢視手機的一些資訊等。下面我來通過我所檢視的系統原始碼來說明這是怎樣的一個過程。

首先找到原始碼目錄下  packages/apps/Dialer  這個應用,這是一個撥號應用,我們平常撥打電話用的就是這個 app。找到該 app 裡 DialpadFragment.java 這個檔案,如下圖


裡面有個監聽 EditText 獲取數字變化後的回撥方法 afterTextChange


在這個方法裡又呼叫了 handleChars,進入到 handleChars 方法裡如下:


該方法定義位於,如果相關巨集控開啟的話,則會執行

handleCustomCode()方法。進入該方法:



在該方法裡傳入了一個 intent,傳送了一條廣播。我們繼續查詢這條廣播的接收者,我們在 EmodeReceiver.java 找到了該廣播接受者,路徑如下:


在這個檔案中,,可以看到這麼一段程式碼:


在收到這條廣播後,呼叫了 startActivityByCode 方法,從該方法名字就可以看出,是通過不同的 Code 來跳轉到不同的 Activity,而該 code 就是使用者從撥號盤輸入的字元。

我們進入到 startActivityByCode 方法中,,看看該方法是怎麼實現的,該方法同樣位於 EmodeReceiver.java 檔案中,在該方法中,我們很容易看到這麼一段程式碼:


switch-case語句,很明顯,底層就是通過這種方式來根據使用者輸入在撥號盤輸入不同的字元來進入特定的工程模式介面的。但是仔細一看,,問題來了,我們在鍵盤輸入的都是數字+*#號,這A,B是咋回事?往上一看:


這樣我們就明白了,這裡把 * 和 # 號全部替換成了 A 和 B。

至此,工程模式的啟動過程就完成了。我們再來總結一下這個過程,首先使用者在撥號盤輸入特定的字串,DialpadFragment 裡的回撥方法 afterTextChange 監聽到撥號盤的EditText裡內容變化後,如果變化後後的字串跟特定某些的字串一致,則會進行相應的處理併發送一條廣播,並將這個字串一同放進廣播中,該廣播的接收者受到這條廣播後,獲取到裡面的字串,然後開啟與該字串對應的 Activity。由撥號盤介面到工程模式介面的啟動就此完成!

相關推薦

Android系統工程模式啟動過程

這幾天在公司看 Android 系統裡的工程模式方面的程式碼。工程模式就是拿來測試手機的,普通使用者會開啟工程模式的很少,但作為一名 Android 手機的開發者來說,就必須知道了。其實就是在手機撥號盤輸入特定混合數字和 *# 的字串,進入特殊的介面。如輸入 *#06# 可

linux驅動由淺入深系列:PBL-SBL1-(bootloader)LK-Android啟動過程之一(高通MSM8953啟動例項)【轉】

本文轉載自:https://blog.csdn.net/radianceblau/article/details/73229005 對於嵌入式工程師瞭解晶片啟動過程是十分有必要的,在分析、除錯各種問題的時候都有可能涉及到這方面的知識。同時這部分知識也是比較複雜的,因為其中涉及到晶片內部架構,啟動各個階段軟體

轉-Linux啟動過程(inittab、rc.sysinit、rcX.d、rc.local)

dha mage 模塊 都是 交換 如何配置 mas 完全 打開 http://blog.chinaunix.net/space.php?uid=10167808&do=blog&id=26042 1)BIOS自檢2)啟動Grub/Lilo3)加載內

嵌入式開發學習(2)<S5PV210啟動過程>

nan ios eight img 啟動方式 margin 需要 外部 啟動 基本概念: 內存:   SRAM 靜態內存 特點:容量小、價格高,優點:不需要軟件初始化,上電就能用。   DRAM 動態內存 特點:容量大、價格低,缺點:上電不能用,需要軟件初始化。  

Linux啟動過程

linux啟動過程一、Linux系統開機啟動過程第一步:開機自檢,加載BIOS第二步:讀取MBR第三步:Boot Loader grub引導菜單第四步:加載kernel內核第五步:init進程依據inittab文件夾來設定運行級別第六步:init進程執行rc.sysinit第七步:啟動內核模塊第八步:執行不同

計算機啟動過程

一、boot的含義 先問一個問題,”啟動”用英語怎麼說? 回答是boot。可是,boot原來的意思是靴子,”啟動”與靴子有什麼關係呢? 原來,這裡的boot是bootstrap(鞋帶)的縮寫,它來自一句諺語: "pull oneself up by one's bootstraps"

Windows啟動過程

我們每天都在和Windows打交道,很多人可能每天都要面對多次Windows的啟動過程,可是您知道在Windows的啟動過程背後,隱藏著什麼祕密嗎?在這一系列過程中都用到了哪些重要的系統檔案?系統的啟動分為幾個步驟?在這些步驟中計算機中發生了什麼事情?這些就是本文試圖告訴您的。

Fabric網路環境啟動過程

這篇文章對fabric的網路環境啟動過程進行講解,也就是我們上節講到的啟動測試fabric網路環境時執行network_setup.sh這個檔案的執行流程 fabric網路環境啟動過程詳解 上一節我們講到 fabric網路環境的啟動測試,主要是使用 ./network_setup.sh up 這個命令,所

Fabric網絡環境啟動過程

nco fabric %20 狀態 pre fix sys 以及 mount 這篇文章對fabric的網絡環境啟動過程進行講解,也就是我們上節講到的啟動測試fabric網絡環境時運行network_setup.sh這個文件的執行流程 fabric網絡環境啟動過程詳解 上一節

uboot移植之啟動過程2

/*******************************************************************************          uboot啟動過程之第二階段的分析(board.c的分析)

uboot移植之啟動過程1

/*******************************************************************************     uboot啟動過程第一階段的分析(start.s檔案) 核心:start.s的分析, 其他:

SpringMVC啟動過程

  通過對SpringMVC啟動過程的深入研究,期望掌握Java Web容器啟動過程;掌握SpringMVC啟動過程;瞭解SpringMVC的配置檔案如何配置,為什麼要這樣配置;掌握SpringMVC是如何工作的;掌握Spring原始碼的設計和增強閱讀原始碼的技巧。 目

Linux作業系統啟動過程

如果你對Linux作業系統有一定的瞭解,想對其更深層次的東西做進一步探究。這當中就包括系統的啟動流程、檔案系統的組成結構、基於動態庫和靜態庫的程式在執行時的異同、協議棧的架構和原理、驅動程式的機制等等。 其中Linux作業系統啟動過程肯定是大家最有興趣瞭解的,這裡在綜合了現有網上大家智慧的基礎上,基

OGRE啟動過程(OGRE HelloWorld程式原理解析)

平:本文比較系統深入的講述了OGRE啟動的全過程。我感覺不適合OGRE入門使用。不過我寫的挺好的。     本文介紹 OGRE 3D 1.9 程式的啟動過程,即從程式啟動到3D圖形呈現,背後有哪些OGRE相關的程式碼被執行。會涉及的OGRE類包括: Root

4、NameNode啟動過程

NameNode 記憶體 本地磁碟 fsimage edits 第一次啟動HDFS 格式化HDFS,目的就是生成fsimage start NameNode,讀取fsimage檔案 start DataNode,向NameNode註冊;bl

朱老師ARM裸機學習筆記(四):S5PV210啟動過程

常用器件特性 記憶體: SRAM 靜態記憶體 特點就是容量小、價格高,優點是不需要軟體初始化直接上電就能用 DRAM 動態記憶體 特點就是容量大、價格低,缺點就是上電後不能直接使用,需要軟體初始化後才可以使用。 微

Android程式入口ActivityThread和Android應用程式啟動流程

          大家初學java時候都知道java的程式入口是從main方法進入,那麼Android是基於java編寫的,那Android的程式入口做了哪些操作呢?還有Android的應用程式到底是怎樣啟動的呢?我們一起來看一下. 首先附上ActivityThread.

Android 系統 Settings 啟動流程

Settings簡介   Settings 是 Android 系統自帶的一個很重要的應用,給使用者提供了操作 Android 系統功能的介面。它裡面包含了 Wireless & network,device,personal 以及 system 等幾

Linux 開機引導和啟動過程(2)

理解作業系統開機引導和啟動過程對於配置作業系統和解決相關啟動問題是至關重要的。該文章陳述了 GRUB2 引導裝載程式開機引導裝載核心的過程和 systemd 初始化系統執行開機啟動作業系統的過程。   事實上,作業系統的啟動分為兩個階段:引導boot和啟動startup。引導

spring MVC 啟動過程

  通過對SpringMVC啟動過程的深入研究,期望掌握Java Web容器啟動過程;掌握SpringMVC啟動過程;瞭解SpringMVC的配置檔案如何配置,為什麼要這樣配置;掌握SpringMVC是如何工作的;掌握Spring原始碼的設計和增強閱讀原始碼的技巧。 目錄 1.Web容器初始化過程 2.Sp