广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    android Setting中隐藏项实现原理与代码

    2018-04-04 08:34:40 次阅读 稿源:互联网
    广告

    我们都知道做程序员有时会恶搞,就像android中,程序员在setting中就隐藏这样一项:

    我们可以找到“关于手机"这一项在里面有“android版本”这一项,如图:

    当我们快速点击“android版本”这一项时会弹出一张图片(恶搞型
    ,这是2.3操作系统,但是4.0系统的话会弹出一个android标志图片

    ,你按住android标志不放的话会出现很多android标志在移动的动画:

    )。

    这里我们就说说2.3系统的

    首先我们找到Settings的源码,在package/app/Settings/src/com/android/settings下,我们要找到

    DeviceInfoSettings.java这个文件,就是“关于手机”这一项的相关代码,在其的OnCreate方法中引用了一个xml文件:
    代码如下:

     addPreferencesFromResource(R.xml.device_info_settings);

    所以我们找到device_info_settings.xml文件看看:
    代码如下:

    <!-- Device firmware version -->
    <Preference android:key="firmware_version"
    style="?android:preferenceInformationStyle"
    android:title="@string/firmware_version"
    android:summary="@string/device_info_default"/>

    这个就是代表“android版本”的相关代码,我们可以看到它的Key是
    代码如下:

    firmware_version

    所以我们在java文件中就去找到它所被引用的代码,在DeviceInfoSettings.java中有一个 public boolean onPreferenceTreeClick方法:
    代码如下:

    @Override
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
    if (preference.getKey().equals("firmware_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) {
    }
    }
    }
    return super.onPreferenceTreeClick(preferenceScreen, preference);
    }

    在其中就实现了你快速点击“android版本”这一项所实现的功能。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告