一. SpecialCharSequenceMgr.java 的 handleSecretCode 方法会处理以*#*#开头,以#*#*结尾的字符串,源码如下
static boolean handleSecretCode(Context context, String input) {
// Secret codes are in the form *#*#<code>#*#*
/// M: for plug-in @{
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="33221985"
android:scheme="android_secret_code" />
</intent-filter>
</receiver>