需要设置在拨号界面输入相应的字符串后进入到不同的模式(工程模式,工厂模式)
在SpecialCharSequenceMgr中进行相关设置
路径:\code\packages\apps\Dialer\src\com\android\dialer\SpecialCharSequenceMgr.java

 static boolean handleSecretCode(Context context, String input) {        // Secret codes are in the form *#*#<code>#*#*        int len = input.length();        if (len > 8 && input.startsWith("*#*#") && input.endsWith("#*#*")) {            final Intent intent = new Intent(SECRET_CODE_ACTION,                    Uri.parse("android_secret_code://" + input.substring(4, len - 4)));            intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);//tangzeyi:set broadcast froeground 20151123            context.sendBroadcast(intent);            return true;        }        return false;}

主要在这个方法中进行判断,比如在拨号盘输入##83781##时,会发送一个广播,在方法中通过字符串的截取得到中间的数字83781,当相关app中的广播接收者接收到发送的相关广播时就会进行调用app的相关操作,比如在这个例子中host = 83781的就是系统自带的工程模式,所以拨号盘输入##83781##时会自动转入工程模式。

自定义暗码时,可以进行如下操作
1.自定义暗码的字符串

    private static final String ENGINEERING_MODE  = "#6666#";     private static final String FACTORY_MODE  = "*#8301#";    private static final String AUTO_MODE  = "#66#";

2.进行相关方法的修改

    static boolean handleEngineeringCode(Context context, String input) {        if (input.equals(ENGINEERING_MODE)) {            Intent intent = new Intent(TelephonyIntents.SECRET_CODE_ACTION,Uri.parse("android_secret_code://" + "83781"));            intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);            context.sendBroadcast(intent);            return true;        }        return false;    }    static boolean handleFactoryCode(Context context, String input) {        if (input.equals(FACTORY_MODE)||input.equals(AUTO_MODE)) {            Intent intent = new Intent(TelephonyIntents.SECRET_CODE_ACTION,Uri.parse("android_secret_code://" + "83789"));            intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);            context.sendBroadcast(intent);            return true;        }        return false;}

这样使在输入自己定义的字符串时,会发送相应的广播,这个步骤也可以通过修改handleSecretCode的内部逻辑来实现

3.对方法的调用位置的添加
在handleChars方法中的判断语句内,添上自己添加的方法。

更多相关文章

  1. No.11 使用firewall配置的防火墙策略的生效模式
  2. 分支和循环(二)(零基础学习C语言)
  3. Android(安卓)textview 不使用ScrollView也可滚动的方法
  4. Android(安卓)四大组件 - 进程的 fork 创建过程
  5. 关于如何获取android状态栏高度
  6. Android(安卓)Okhttp + Android提交post表单乱码问题
  7. Android(安卓)Toast cancel问题、源码分析和解决方案
  8. Android(安卓)知识点积累(一)
  9. android判断是否联网

随机推荐

  1. android:padding 和 android:margin的区
  2. 分析Android(安卓)根文件系统启动过程(ini
  3. android 弹出日期滑动选择框,日期滚动滑动
  4. Android实现图表绘制和展示
  5. android实现推送实践
  6. android Activity实现从底部弹出或滑出选
  7. Android的背景
  8. 新建Android工程遇到几个问题
  9. Android(安卓)Intent的几种用法全面总结
  10. Android入门第十六篇之Style与Theme