我们很多人应该都做过这样的操作,打开拨号键盘输入*#*#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,可能会跟其他应用的设置冲突,不过一般情况下应用应该不会使用这个功能,非系统级应用的控制还是放到应用内比较好。

更多相关文章

  1. 聚焦 Android(安卓)11: Google Play 应用分发与盈利
  2. Android(安卓)Automotive 车载应用对驾驶模式(Safe Drive Mode)
  3. Android中的Intent[转]
  4. Android(安卓)ApiDemos示例解析(91):OS->SMS Messaging
  5. Android应用开发提高系列(5)――Android动态加载(下)――加载已安装A
  6. Android多个APK共享数据(Shared User ID)
  7. android 默认签名 debug签名
  8. Android中的进程生命周期
  9. Android(安卓)native应用开发简明教程 (1) - 本地开发武器库概览

随机推荐

  1. 玩转Android---UI篇---TextView(文本框)
  2. android的SDK----google中的翻译
  3. Android(安卓)Studio 1.0 苹果电脑安装配
  4. 将要更新到android 4.0的手机列表
  5. Android(安卓)系统概要 ——《第一行代码
  6. android访问服务器端上传及服务器端接收
  7. Android的View类介绍-android的学习之旅(
  8. android CTS测试
  9. Qt on Android:将Qt调试信息输出到logcat
  10. 小熊android学习总结:Linux内核怎样启动An