GsmUmtsCallForwardOptions.onResume()----
void init(TimeConsumingPreferenceListener listener, boolean skipReading)
CallForwardEditPreference.init(TimeConsumingPreferenceListener listener, boolean skipReading)
GSMPhone.getCallForwardingOption(int commandInterfaceCFReason, Message onComplete)
RIL.queryCallForwardStatus(int cfReason, int serviceClass, String number, Message response)
GSMPhone.handleCfuQueryResult(CallForwardInfo[] infos)
SIMRecords.setVoiceCallForwardingFlag(int line, boolean enable)
GSMPhone.notifyCallForwardingIndicator()
PhoneNotifier.notifyCallForwardingChanged(Phone sender)
DefaultPhoneNotifier.java----mRegistry.notifyCallForwardingChanged(sender.getCallForwardingIndicator());
TelephonyRegistry.notifyCallForwardingChanged
IPhoneStateListener.aidl--------onCallForwardingIndicatorChanged()
PhoneStateListener.this.onCallForwardingIndicatorChanged(msg.arg1 != 0);
public void onCallForwardingIndicatorChanged(boolean cfi) {
Message.obtain(mHandler, LISTEN_CALL_FORWARDING_INDICATOR, cfi ? 1 : 0, 0, null)
.sendToTarget();
}
case LISTEN_CALL_FORWARDING_INDICATOR:
PhoneStateListener.this.onCallForwardingIndicatorChanged(msg.arg1 != 0);
break;
CallNotifier.mPhoneStateListener.new PhoneStateListener() {...}.onCallForwardingIndicatorChanged(boolean cfi)
CallNotifier.onCfiChanged(boolean visible)
NotificationMgr.updateCfi(boolean visible)
----------------------------------
下层监听:
TelephonyRegistry.listen(String pkgForDebug, IPhoneStateListener callback, int events, boolean notifyNow)
ITelephonyRegistry.listen(pkgForDebug, listener.callback, events, notifyNow);
TelephonyManager.listen(PhoneStateListener listener, int events)
PhoneStateListener.onCallForwardingIndicatorChanged(boolean cfi)
CallNotifier.onCfiChanged(boolean visible)
void init(TimeConsumingPreferenceListener listener, boolean skipReading)
CallForwardEditPreference.init(TimeConsumingPreferenceListener listener, boolean skipReading)
GSMPhone.getCallForwardingOption(int commandInterfaceCFReason, Message onComplete)
RIL.queryCallForwardStatus(int cfReason, int serviceClass, String number, Message response)
GSMPhone.handleCfuQueryResult(CallForwardInfo[] infos)
SIMRecords.setVoiceCallForwardingFlag(int line, boolean enable)
GSMPhone.notifyCallForwardingIndicator()
PhoneNotifier.notifyCallForwardingChanged(Phone sender)
DefaultPhoneNotifier.java----mRegistry.notifyCallForwardingChanged(sender.getCallForwardingIndicator());
TelephonyRegistry.notifyCallForwardingChanged
IPhoneStateListener.aidl--------onCallForwardingIndicatorChanged()
PhoneStateListener.this.onCallForwardingIndicatorChanged(msg.arg1 != 0);
public void onCallForwardingIndicatorChanged(boolean cfi) {
Message.obtain(mHandler, LISTEN_CALL_FORWARDING_INDICATOR, cfi ? 1 : 0, 0, null)
.sendToTarget();
}
case LISTEN_CALL_FORWARDING_INDICATOR:
PhoneStateListener.this.onCallForwardingIndicatorChanged(msg.arg1 != 0);
break;
CallNotifier.mPhoneStateListener.new PhoneStateListener() {...}.onCallForwardingIndicatorChanged(boolean cfi)
CallNotifier.onCfiChanged(boolean visible)
NotificationMgr.updateCfi(boolean visible)
----------------------------------
下层监听:
TelephonyRegistry.listen(String pkgForDebug, IPhoneStateListener callback, int events, boolean notifyNow)
ITelephonyRegistry.listen(pkgForDebug, listener.callback, events, notifyNow);
TelephonyManager.listen(PhoneStateListener listener, int events)
PhoneStateListener.onCallForwardingIndicatorChanged(boolean cfi)
CallNotifier.onCfiChanged(boolean visible)
NotificationMgr.updateCfi(boolean visible)
后面的,就可以自己看了。主要用到了回调和java的多态机制。看看source code就知道了...