Android在拨号界面输入##12345##这样格式的代码,就会自动跳转,它是如何实现的呢?
SecretCode的实现都是利用receiver来完成的,当检测到固定格式的字符串输入后,就会送暗码广播:
static private boolean handleSecretCode(Context context, String input) { // Secret codes are in the form *#*#<code>#*#* int len = input.length(); if (len > 8 && input.startsWith("*#*#") && input.endsWith("#*#*")) { Intent intent = new Intent(TelephonyIntents.SECRET_CODE_ACTION, Uri.parse("android_secret_code://" + input.substring(4, len - 4))); context.sendBroadcast(intent); return true; } return false; }
如果要添加暗码,例如83781,只需要在目标应用的AndroidManifest文件中注册:
<receiver android:name="EMStartReceiver" > <intent-filter> <action android:name="android.provider.Telephony.SECRET_CODE" /> <data android:host="83781" android:scheme="android_secret_code" /> </intent-filter> </receiver>
然后在receiver中启动主Activity,注意主Activity不要声明为Launcher。
这样就完成了。