Android Secret Code

咱們不少人應該都作過這樣的操做,打開撥號鍵盤輸入*#*#4636#*#*等字符就會彈出一個界面顯示手機相關的一些信息,這個功能在Android中被稱爲android secret code,除了這些系統預置的secret code,咱們也能夠實現本身的secret code,並且實現起來很是簡單。android

要實現本身的secret code,只須要向系統註冊一個Broadcast Receiver,不須要任何權限,以下所示:ide

<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>

只須要註冊action爲android.provider.Telephony.SECRET_CODE,而且scheme爲android_secret_code的Broadcast Receiver,這樣當用戶在撥號鍵盤輸入*#*#0123#*#*時就會調用咱們註冊的Receiver了,在Receiver中把接收到的Intent信息打出來會是這樣:code

Intent { act=android.provider.Telephony.SECRET_CODE dat=android_secret_code://0123 flg=0x10 cmp=me.angeldevil.secretcode/.SecretReceiver }xml

這個邏輯的處理在撥號應用裏,若是使用第三方撥號應用而這個應用又沒有處理的話,也許會失效。進程

那麼這個功能有什麼作用呢?這個就看應用須要了,因爲這個Broadcast Receiver運行在你本身的應用進程內,因此能夠讀取你應用內的一切數據。好比說你能夠在接收到Broadcast後dump應用狀態,能夠打開一個Activity作一些特殊設置,能夠啓用/禁用一些功能(好比Flyme就能夠在輸入*#*#6961#*#*後在設置中顯示一些輔助功能,能夠開啓Root等)。it

可是,不一樣的Receiver能夠註冊相同的android:host,可能會跟其餘應用的設置衝突,不過通常狀況下應用應該不會使用這個功能,非系統級應用的控制仍是放到應用內比較好。io

相關文章
相關標籤/搜索