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

相关文章
相关标签/搜索