问题描述
如题如图,在插入sim卡后,设置中点击---网络和互联网---互联网---再点击
china unicom,会弹出“WLAN暂时无法自动连接”,我们的目的是直接隐藏掉这个china unicom选项,这样就不会出现点击的情况。
修改
我们根据互联网关键字,找到这个页面布局的xml为network_provider_settings.xml,这个china unicom选择在xml中对应的是title="summary_placeholder",这是一个占位符,会根据你插入的不同sim卡显示不同,在这里,如果你直接注释掉整个PreferenceCategory后设置会闪退,将isPreferenceVisible改为false也不会起作用,需要修改NetworkMobileProviderController。
<PreferenceCategory
android:key="provider_model_mobile_network"
android:title="@string/summary_placeholder"
android:layout="@layout/preference_category_no_label"
settings:isPreferenceVisible="@bool/config_show_sim_info"
settings:controller="com.android.settings.network.NetworkMobileProviderController"/>
修改NetworkMobileProviderController的函数getAvailabilityStatus,把原来的代码注释到,让它直接返回CONDITIONALLY_UNAVAILABLE。
// NetworkMobileProviderController.java
@Override
public int getAvailabilityStatus() {
return CONDITIONALLY_UNAVAILABLE;
// if (mHide || mSubscriptionsController == null) {
// return CONDITIONALLY_UNAVAILABLE;
// }
// return mSubscriptionsController.isAvailable() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
}
会实现的效果是,china unicom确实是消失了,但是wifi列表下方出现了一个蓝色横条,根本原因不清楚,应该是跟我们隐藏了china unicom元素有关,具体是xml中的选项allowDividerAbove,这个选项作用是在该设置项的上方显示一条分割线,按照如下修改就可以解决,allowDividerAbove由true改为false:
<!-- network_provider_settings.xml -->
<!-- change allowDividerAbove from true to false, to Hide blue stripes -->
<Preference
android:key="configure_network_settings"
android:title="@string/network_and_internet_preferences_title"
settings:allowDividerAbove="false"
android:fragment="com.android.settings.wifi.ConfigureWifiSettings"/>
<Preference