Android Secret Code
我們很多人應(yīng)該都做過(guò)這樣的操作,打開(kāi)撥號(hào)鍵盤輸入*#*#4636#*#*等字符就會(huì)彈出一個(gè)界面顯示手機(jī)相關(guān)的一些信息,這個(gè)功能在Android中被稱為android secret code,除了這些系統(tǒng)預(yù)置的secret code,我們也可以實(shí)現(xiàn)自己的secret code,而且實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單。
要實(shí)現(xiàn)自己的secret code,只需要向系統(tǒng)注冊(cè)一個(gè)Broadcast Receiver,不需要任何權(quán)限,如下所示:
<receiver android:name=".SecretReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SECRET_CODE"/>
<data android:scheme="android_secret_code" android:host="0123"/>
</intent-filter>
</receiver>
只需要注冊(cè)action為android.provider.Telephony.SECRET_CODE,并且scheme為android_secret_code的Broadcast Receiver,這樣當(dāng)用戶在撥號(hào)鍵盤輸入*#*#0123#*#*時(shí)就會(huì)調(diào)用我們注冊(cè)的Receiver了,在Receiver中把接收到的Intent信息打出來(lái)會(huì)是這樣:
Intent
這個(gè)邏輯的處理在撥號(hào)應(yīng)用里,如果使用第三方撥號(hào)應(yīng)用而這個(gè)應(yīng)用又沒(méi)有處理的話,也許會(huì)失效。
那么這個(gè)功能有什么做用呢?這個(gè)就看應(yīng)用需要了,由于這個(gè)Broadcast Receiver運(yùn)行在你自己的應(yīng)用進(jìn)程內(nèi),所以可以讀取你應(yīng)用內(nèi)的一切數(shù)據(jù)。比如說(shuō)你可以在接收到Broadcast后dump應(yīng)用狀態(tài),可以打開(kāi)一個(gè)Activity做一些特殊設(shè)置,可以啟用/禁用一些功能(比如Flyme就可以在輸入*#*#6961#*#*后在設(shè)置中顯示一些輔助功能,可以開(kāi)啟Root等)。
但是,不同的Receiver可以注冊(cè)相同的android:host,可能會(huì)跟其他應(yīng)用的設(shè)置沖突,不過(guò)一般情況下應(yīng)用應(yīng)該不會(huì)使用這個(gè)功能,非系統(tǒng)級(jí)應(yīng)用的控制還是放到應(yīng)用內(nèi)比較好。

浙公網(wǎng)安備 33010602011771號(hào)