Android rom开发:通过拨号使用暗码打开不显示图标的应用

修改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 {
     

你可能感兴趣的:(android源码,android,rom开发,android)