Android 编程下的 Secret Code
我们很多人应该都做过这样的操作,打开拨号键盘输入*#*#4636#*#*等字符就会弹出一个界面显示手机相关的一些信息,这个功能在 Android 中被称为 Android Secret Code,除了这些系统预置的 Secret Code,我们也可以实现自己的 Secret Code,而且实现起来非常简单。
要实现自己的 Secret Code,只需要向系统注册一个 Broadcast Receiver,不需要任何权限,如下所示:
<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 信息打出来会是这样:
- Intent { act=android.provider.Telephony.SECRET_CODE dat=android_secret_code://0123 flg=0x10 cmp=me.angeldevil.secretcode/.SecretReceiver }
这个逻辑的处理在拨号应用里,如果使用第三方拨号应用而这个应用又没有处理的话,也许会失效。
那么这个功能有什么做用呢?这个就看应用需要了,由于这个 Broadcast Receiver 运行在你自己的应用进程内,所以可以读取你应用内的一切数据。比如说你可以在接收到 Broadcast 后 dump 应用状态,可以打开一个 Activity 做一些特殊设置,可以启用/禁用一些功能(比如 Flyme 就可以在输入 *#*#6961#*#* 后在设置中显示一些辅助功能,可以开启 Root 等)。但是,不同的 Receiver 可以注册相同的 android:host,可能会跟其他应用的设置冲突,不过一般情况下应用应该不会使用这个功能,非系统级应用的控制还是放到应用内比较好。
更多相关文章
- Android 系统框架介绍
- 转: [Android]获取未安装的APK信息
- Android开机向导setupwizard,设置系统语言,WiFi向导
- Android 4 / iMX6系统开发手记
- Android 抢购功能(时间戳之间的倒计时)
- [置顶] 如何使Android应用程序获取系统权限来修改系统时间
- 去除Android系统应用的通知功能
- Android 根文件系统分析(2)