Android SystemUI 初探

标题1

代码路径

/Android工程根目录/frameworks/base/packages/SystemUI/

修改需求

最近由于工作需要要对Android界面UI进行一些定制(主要是禁用WLAN和蓝牙功能),在Settings.apk我已经我通过去掉显示功能禁用了WLAN和蓝牙功能,但发现在系统界面的下拉菜单中发现有蓝牙和WLAN的快速设置组件(quick settings)。因此要对这个快捷按键进行修改。

代码修改

由于只要禁用WLAN和蓝牙功能,我就不进行过于复杂的修改,只针对需求进行组件的删除。

在/SystemUI/src/com/android/systemui/quicksettings/目录下可以很容易看到系统预定好的下拉菜单中快键方式的组件,所有的组件都是
QuickSettingsTile的子类。

不过这里只是这些组件的定义的代码,添加组件在其他位置,但是知道了这些组件的名称,很容易可以找到这些组件被引用的位置。

src/com/android/systemui/statusbar/phone/QuickSettingsController.java
我找到了添加这些组件的入口:setupQuickSettings

 void loadTiles() {

    boolean bluetoothSupported = QSUtils.deviceSupportsBluetooth();
    boolean mobileDataSupported = QSUtils.deviceSupportsMobileData(mContext);
    boolean gpsSupported = QSUtils.deviceSupportsGps(mContext);


     if (!bluetoothSupported) {
        TILES_DEFAULT.remove(TILE_BLUETOOTH);
    }

    if (!mobileDataSupported) {
        TILES_DEFAULT.remove(TILE_MOBILEDATA);
    }

    if (!gpsSupported) {
        TILES_DEFAULT.remove(TILE_GPS);
    }

    ………………
}

这里通过TILES_DEFAULT.remove方法就可以从QuickSetting中删除相应的组件。
不过我所做的删除的操作都只是消除了可视化的操作按钮,如果需要从系统中禁用这些功能,
在framework或native中还需要更深层次的定制。

你可能感兴趣的:(android,SystemUI)