添加网络偏好选择:默认(3G优先、仅3G、仅2G)。
一、自定义ListPreference
android:persistent 为true时,系统会帮助我们去保存该设置,即使重启后依然能记忆之前的设置,这也是所谓的持久化 。这里将android:persistent设置为False,表明不需要让系统去做持久化,开发者系统通过自己的方式去实现持久化。例如,在此我们是通过在自定义ListPreference的执行构造函数 时,读取系统设置来决定ListPreference的选中状态。
gsm_umts_options.xml
UseNetModeListPreference派生于ListPreference,这个类主要实现两个功能:一是设置网络模式,二是读取系统设置的网络模式并用ListPreference显示。这里访问和设置网络模式是一个耗时的操作 ,它由Phone对象去完成。我们不希望在执行网络模式访问和设置时阻塞UI线程 ,而是希望UI线程和子线程能实现异步 ,并且在子线程(Phone对象)操作完成后给UI线程发个消息 通知,这样UI就能根据子线程的操作结果来更新界面 了 。
Handler机制就是为了实现线程间的消息通信和异步处理所产生的。
UseNetModeListPreference.java
二、切换网络的AT指令
查询模组的AT指令手册:
AT^DSTM Set access technology mode
AT^DDTM Set Default Run mode and Access technology
refrence_ril.c