一. SpecialCharSequenceMgr.Java 的 handleSecretCode 方法会处理以*#*#开头,以#*#*结尾的字符串,源码如下
- static boolean handleSecretCode(Context context, String input) {
-
-
-
- input = ExtensionManager.getInstance().getDialPadExtension().handleSecretCode(input);
-
-
- 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)));
- context.sendBroadcast(intent);
- return true;
- }
- if(input.equals("*#6813#"))
- {
- Intent intent = new Intent(SECRET_CODE_ACTION,
- Uri.parse("android_secret_code://" + input.substring(2, len - 1)));
- context.sendBroadcast(intent);
- return true;
- }
-
- return false;
- }
二. 在我们自己的代码中监听对应的广播消息,代码如:
- <receiver android:name="lyps.SecretReceiver" >
- <intent-filter>
- <action android:name="android.provider.Telephony.SECRET_CODE" />
-
- <data
- android:host="83789"
- android:scheme="android_secret_code" />
- </intent-filter>
- </receiver>