我们很多人应该都做过这样的操作,打开拨号键盘输入*#*#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(安卓)拨号器的简单实现
  2. Android(安卓)--- Activity生命周期
  3. Android中不同应用间实现SharedPreferences数据共享
  4. 锁屏界面
  5. 关于Android(安卓)Studio3.2新建项目Android(安卓)resource link
  6. Android(安卓)- Manifest 文件 详解
  7. Android之应用程序基础
  8. android 零星调试笔记
  9. Android四大组件的理解

随机推荐

  1. Android(安卓)系统是否要重启时弹出框
  2. 在Android(安卓)7.0上PopupWindow.showAs
  3. android MediaPlayer 错误代码(error cod
  4. android 源码编译
  5. Android电子拍卖系统总结四
  6. Ubuntu10.04 64(32)位 android开发环境建
  7. Android【防抖操作的工具类】
  8. android 显示系统时间
  9. Android中两个控件滑动效果冲突的解决办
  10. 【问题处理】arcgis运行在android studio