Android 裏面的android_secret_code

在android的手機裏,進入撥號程序,輸入*#*#4636#*#* 能夠看到一個測試應用。java

 

查看Phone的源代碼,有一個函數專門處理*#*# 開頭,#*#*結尾的撥號字符串。android

 

SpecialCharSequenceMgr.javaapp

 

 /**
     * Handles secret codes to launch arbitrary activities in the form of *#*#<code>#*#*.
     * If a secret code is encountered an Intent is started with the android_secret_code://<code>
     * URI.
     *
     * @param context the context to use
     * @param input the text to check for a secret code in
     * @return true if a secret code was encountered
     */
    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(Intents.SECRET_CODE_ACTION,
                    Uri.parse("android_secret_code://" + input.substring(4, len - 4)));
            context.sendBroadcast(intent);
            return true;
        }

        return false;
    }ide

 

 

這樣,根據android_secret_code就能夠查到系統所用的全部隱形字符串。函數

 

 

b090@test-desktop:~/Android_Code$ find . -name "AndroidManifest.xml" | xargs grep android_secret_code
./packages/providers/CalendarProvider/AndroidManifest.xml:                 <data android:scheme="android_secret_code" android:host="225" />
./packages/apps/Settings/AndroidManifest.xml:                 <data android:scheme="android_secret_code" android:host="4636" />
./packages/apps/VoiceDialer/AndroidManifest.xml:        <data android:scheme="android_secret_code" android:host="8351" />
./packages/apps/VoiceDialer/AndroidManifest.xml:        <data android:scheme="android_secret_code" android:host="8350" />測試

 

能夠看到,系統代碼裏面有225/4636/8351/8350隱形字符串。.net

 

若是用戶想要開發應用程序支持特殊的隱形字串,只須要照貓畫虎在AndroidManifest.xml添加Filter就能夠了。code

 

例如:orm

 

        <receiver android:name="TestingSettingsBroadcastReceiver">
            <intent-filter>
                 <action android:name="android.provider.Telephony.SECRET_CODE" />
                 <data android:scheme="android_secret_code" android:host="4636" />
            </intent-filter>
       </receiver>xml

 

 

有沒有什麼方法,能看看到系統所支持的intent以及其所支持的參數呢?

相關文章
相關標籤/搜索