本文主要是介绍【开发方案】Android 双卡设备手动搜网功能适配,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、背景
存在运营商需求:当SIM卡设置中选择了自动搜网,那么在重启开机后要执行一次手动搜网。
若基于本身单卡的实现,只搜索卡槽0的,而且写成了单线程,那么就在适配双卡的过程中还需要调整设计模式。
二、源码逻辑
- Settings应用发送消息,Telephony 模块Handler回调方法
- TeleService 处理消息 EVENT_GET_NETWORK_SELECTION_MODE_DONE,并notifyRequester()
- TelephonyManager => MD
(一)Settings APP
packages/apps/Settings/src/com/android/settings/network/ 界面
(二)Telephony Service
packages/services/Telephony/src/com/android/phone/PhoneInterfaceManager.java 业务逻辑
- handleMessage -> notifyRequester
/*** A handler that processes messages on the main thread in the phone process. Since many* of the Phone calls are not thread safe this is needed to shuttle the requests from the* inbound binder threads to the main thread in the phone process. The Binder thread* may provide a {@link MainThreadRequest} object in the msg.obj field that they are waiting* on, which will be notified when the operation completes and will contain the result of the* request.** <p>If a MainThreadRequest object is provided in the msg.obj field,* note that request.result must be set to something non-null for the calling thread to* unblock.*/private final class MainThreadHandler extends Handler {@Overridepublic void handleMessage(Message msg) {MainThreadRequest request; Message onCompleted;AsyncResult ar;UiccPort uiccPort;IccAPDUArgument iccArgument;final Phone defaultPhone = getDefaultPhone();switch (msg.what) {case EVENT_GET_NETWORK_SELECTION_MODE_DONE://obj参数保存了一个AsyncResult对象ar = (AsyncResult) msg.obj;//userObj参数保存了一个MainThreadRequest对象request = (MainThreadRequest) ar.userObj;if (ar.exception != null) { //异步请求异常,设置结果unknownrequest.result = TelephonyManager.NETWORK_SELECTION_MODE_UNKNOWN;} else { //根据异步请求结果设置网络选择模式int mode = ((int[]) ar.result)[0];if (mode == 0) { //mode0自动搜网request.result = TelephonyManager.NETWORK_SELECTION_MODE_AUTO;} else { //mode1手动搜网request.result = TelephonyManager.NETWORK_SELECTION_MODE_MANUAL;}}notifyRequester(request); //通知请求异步操作的结果break;default:Lo
这篇关于【开发方案】Android 双卡设备手动搜网功能适配的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!