修改packages/apps/Dialer下的SpecialCharSequenceMgr.java即可,不同android 版本具体路径可能不一样,笔者的修改基于android 7.1 sdk。
效果:
在拨号键盘输入*#1024#*,打开在launcher里面不显示图标的test app。
使用场景:
显示一些隐秘的系统信息,或者打开测试工具,等等
patch如下:
diff --git a/packages/apps/Dialer/src/com/android/dialer/SpecialCharSequenceMgr.java b/packages/apps/Dialer/src/com/android/dialer/SpecialCharSequenceMgr.java
old mode 100755
new mode 100644
index 24c3198..5e11c0a
--- a/packages/apps/Dialer/src/com/android/dialer/SpecialCharSequenceMgr.java
+++ b/packages/apps/Dialer/src/com/android/dialer/SpecialCharSequenceMgr.java
@@ -23,6 +23,7 @@ import android.app.KeyguardManager;
import android.app.ProgressDialog;
import android.bluetooth.BluetoothAdapter;
import android.content.ActivityNotFoundException;
+import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
@@ -80,6 +81,7 @@ public class SpecialCharSequenceMgr {
private static final String MMI_REGULATORY_INFO_DISPLAY = "*#07#";
private static final String PRL_VERSION_DISPLAY = "*#0000#";
+ private static final String CODE_TEST = "*#1024#*";
private final static String LOG_SETTINGS = "*#3333#*";
@@ -147,6 +149,7 @@ public class SpecialCharSequenceMgr {
String dialString = PhoneNumberUtils.stripSeparators(input);
if (handleDeviceIdDisplay(context, dialString)
+ || handlePcbaTest(context, dialString)
|| handlePRLVersion(context, dialString)
|| handleRegulatoryInfoDisplay(context, dialString)
|| handlePinEntry(context, dialString)
@@ -176,6 +179,21 @@ public class SpecialCharSequenceMgr {
}
+ static private boolean handleCodeTest(Context context, String input) {
+ if (input.equals(CODE_TEST)) {
+ try {
+ Intent intent = new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setComponent(new ComponentName("com.code.test", "com.code.test.MainActivity"));
+ context.startActivity(intent);
+ return true;
+ } catch (ActivityNotFoundException e) {
+ Log.d(TAG, "no activity to handle test");
+ }
+ }
+ return false;
+ }
+
static private boolean handlePRLVersion(Context context, String input) {
if (input.equals(PRL_VERSION_DISPLAY)) {
try {