Androidソースコードは開発を攻撃します-設定

  システムによって設定されたコードに従いました。ここで、後で参照できるようにメモを取ります。

 コードパスはpackages / apps / Settings /にあります。

 設定全体のメインクラスはSettings.javaです。

 電話に関するいくつかの基本的な情報はDeviceInfoSettings.javaにあります

  DeviceInfoSettings.java:

 @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        addPreferencesFromResource(R.xml.device_info_settings);

        setStringSummary(KEY_FIRMWARE_VERSION, Build.VERSION.RELEASE);  //显示Android Version的版本号
        findPreference(KEY_FIRMWARE_VERSION).setEnabled(true);       //
        //setValueSummary(KEY_BASEBAND_VERSION, "gsm.version.baseband");  //Baseband verison(基带信息)
        setStringSummary(KEY_ROM_INFO, getRomInfo());    //ROM
        setStringSummary(KEY_RAM_INFO, getRamInfo());<span style="white-space:pre">	</span>//RAM
        setStringSummary(KEY_CPU_INFO, getCpuInfo());    //CPU信息
        setStringSummary(KEY_BASEBAND_VERSION, getBasebandVersion());
        setStringSummary(KEY_DEVICE_MODEL, Build.MODEL + getMsvSuffix());
        setValueSummary(KEY_EQUIPMENT_ID, PROPERTY_EQUIPMENT_ID);
        setStringSummary(KEY_DEVICE_MODEL, Build.MODEL);
        setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY);  //
        findPreference(KEY_BUILD_NUMBER).setEnabled(true); 
        findPreference(KEY_KERNEL_VERSION).setSummary(getFormattedKernelVersion()); //内核信息
個人的に非常に興味深いと思う目に見えない機能もいくつかあり、Android開発者はかなりなりすましです。onPreferenceTreeClickメソッドを見てください。

 

@Override
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
        if (preference.getKey().equals(KEY_FIRMWARE_VERSION)) {  //点击Android Version信息
            System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
            mHits[mHits.length-1] = SystemClock.uptimeMillis();
            if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {  //短时间内多次点击
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.setClassName("android",
                        com.android.internal.app.PlatLogoActivity.class.getName());  //跳转到很任性的版本界面
                try {
                    startActivity(intent);
                } catch (Exception e) {
                    Log.e(LOG_TAG, "Unable to start activity " + intent.toString());
                }
            }
        } else if (preference.getKey().equals(KEY_BUILD_NUMBER)) { //点击Build  number 多次点击进入开发者模式
            if (mDevHitCountdown > 0) {
                mDevHitCountdown--;
                if (mDevHitCountdown == 0) {
                    getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,
                            Context.MODE_PRIVATE).edit().putBoolean(
                                    DevelopmentSettings.PREF_SHOW, true).apply();
                    if (mDevHitToast != null) {
                        mDevHitToast.cancel();
                    }
                    mDevHitToast = Toast.makeText(getActivity(), R.string.show_dev_on,
                            Toast.LENGTH_LONG);
                    mDevHitToast.show();
                } else if (mDevHitCountdown > 0
                        && mDevHitCountdown < (TAPS_TO_BE_A_DEVELOPER-2)) {
                    if (mDevHitToast != null) {
                        mDevHitToast.cancel();
                    }
                    mDevHitToast = Toast.makeText(getActivity(), getResources().getQuantityString(
                            R.plurals.show_dev_countdown, mDevHitCountdown, mDevHitCountdown),
                            Toast.LENGTH_SHORT);
                    mDevHitToast.show();
                }
            } else if (mDevHitCountdown < 0) {
                if (mDevHitToast != null) {
                    mDevHitToast.cancel();
                }
                mDevHitToast = Toast.makeText(getActivity(), R.string.show_dev_already,
                        Toast.LENGTH_LONG);
                mDevHitToast.show();
            }
        }
        return super.onPreferenceTreeClick(preferenceScreen, preference);
    }


           



おすすめ

転載: blog.csdn.net/long_shaoye/article/details/46422793