在 packages/apps/Dialer/src/com/android/dialer/SpecialCharSequenceMgr.java 里面 handleSecretCode方法会发送暗码广播 只要以*#*#开头#*#*结尾都会把中间的暗码发送出去
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("#*#*")) {
if ("4636".equals(input.substring(4, len - 4))) {
//return false;
}
final Intent intent = new Intent(SECRET_CODE_ACTION,
Uri.parse("android_secret_code://" + input.substring(4, len - 4)));
context.sendBroadcast(intent);
return true;
}
return false;
}
在vendor/sim/CIT/AndroidManifest.xml 中会注册接收这个广播 来启动CIT界面
<receiver android:name=".EntranceReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SECRET_CODE"/>
<data android:scheme="android_secret_code" android:host="248"/>
<data android:scheme="android_secret_code" android:host="76388378"/>
<data android:scheme="android_secret_code" android:host="8266"/>
<data android:scheme="android_secret_code" android:host="49"/>
<data android:scheme="android_secret_code" android:host="1030"/>
<data android:scheme="android_secret_code" android:host="0"/>
</intent-filter>
</receiver>
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("#*#*")) {
if ("4636".equals(input.substring(4, len - 4))) {
//return false;
}
final Intent intent = new Intent(SECRET_CODE_ACTION,
Uri.parse("android_secret_code://" + input.substring(4, len - 4)));
context.sendBroadcast(intent);
return true;
}
return false;
}
在vendor/sim/CIT/AndroidManifest.xml 中会注册接收这个广播 来启动CIT界面
<receiver android:name=".EntranceReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SECRET_CODE"/>
<data android:scheme="android_secret_code" android:host="248"/>
<data android:scheme="android_secret_code" android:host="76388378"/>
<data android:scheme="android_secret_code" android:host="8266"/>
<data android:scheme="android_secret_code" android:host="49"/>
<data android:scheme="android_secret_code" android:host="1030"/>
<data android:scheme="android_secret_code" android:host="0"/>
</intent-filter>
</receiver>