联芯代码如何去掉QuickSetting下蓝牙及wifi快捷图标

QuickSetting代码在SystemUI目录下,具体代码如下:

联芯代码如何去掉QuickSetting下蓝牙及wifi快捷图标_第1张图片

而控制quicksetting下各功能是否显示是由QuickSettingsController类来控制的。

联芯代码如何去掉QuickSetting下蓝牙及wifi快捷图标_第2张图片

在QuickSettingsController下找到loadTiles方法;

 

 boolean bluetoothSupported = QSUtils.deviceSupportsBluetooth() && mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
        boolean mobileDataSupported = QSUtils.deviceSupportsMobileData(mContext);
        boolean gpsSupported = QSUtils.deviceSupportsGps(mContext);
        boolean autorotateSupported = QSUtils.deviceSupportsAutorotate(mContext);
        boolean wifiSupported =  mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI);

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

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

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

        if(!wifiSupported) {
        	TILES_DEFAULT.remove(TILE_WIFI);
        }

hasSystemFeature函数

(frameworks\base\services\java\com\android\server\pm)  mPM.hasSystemFeature(name)经过AIDL实际上调用到文件PackageManagerService.java 。

mAvailableFeatures里面的内容是通过读取/system/etc/permissions下面的文档。


延伸:


android4.0 及以上 版本里 ,如果在settings下看不到wifi和bluetooth两个菜单选项,这是因为在setting里,对系统是否有特定的模块加上了判断,如果没有就不显示。android4.0的模块判断函数:getPackageManager().hasSystemFeature(String string).通过该函数判断系统是否有特定的模块功能。

 例如判断是否有 wifi 和 蓝牙模块的具体代码:

getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI);

getPackageManager().hasSystemFe(PackageManager.FEATURE_BLUETOOTH);

PackageManager这些字符串 存在system/etc/permissions/xxxx.xml文件里,它们一般从/framework/base/data/etc/xxx.xml复制过来。

     PackageManager.FEATURE_BLUETOOTH = "android.hardware.wifi"

     PackageManager.FEATURE_BLUETOOTH = "android.hardware.bluetooth"


解决wifi和蓝牙不显示方法:

一、直接把包含对应 feature 的xml文件复制到system/etc/permissions/目录下,相当于加上系统所具有的具体模块的功能配置文件;

、修改product_copy.mk文件,添加相应的设备。



你可能感兴趣的:(联芯代码如何去掉QuickSetting下蓝牙及wifi快捷图标)