private class ApnChangeObserver extends ContentObserver {
在Gsm生成時,註冊 傾聽 database 的變化:
apnObserver = new ApnChangeObserver();
p.getContext().getContentResolver().registerContentObserver(
Telephony.Carriers.CONTENT_URI, true, apnObserver);
這個 Telephony.Carriers.CONTENT_URI 好像就是 apn list。所以database 變更 (apn 變更)時,observer 的 onChage 就會被呼叫:
public void onChange(boolean selfChange) {
sendMessage(obtainMessage(EVENT_APN_CHANGED));
}
送出 EVENT_APN_CHANGED 出去..
同理,handleMessage 收到,就call..
case EVENT_APN_CHANGED:
onApnChanged();
break;
還是同一個 class,onApnChanged:
if (state != State.DISCONNECTING) {
先斷線,再重連:
cleanUpConnection(isConnected, Phone.REASON_APN_CHANGED);
if (!isConnected) {
// reset reconnect timer
mRetryMgr.resetRetryCount();
mReregisterOnReconnectFailure = false;
trySetupData(Phone.REASON_APN_CHANGED);
trySetupData( ) 一堆檢查後,call phone.notifyDataConnection( )作連線的動作。
沒有留言:
張貼留言