Symbian之IAP(Internet Access Point)

來源:互聯網
上載者:User

最近比較空閑,一直在最佳化之前的移植代碼。之前撥號介面一直有那麼點問題,所以今天重新看了下IAP相關的代碼,總結如下。

一般程式在使用RConnection進行撥號連線時,預設會彈出一個存取點列表框,讓你選擇指定的IAP進行撥號。現在很流行自繪UI,這個系統列表框就會與程式顯得有點格格不入,同時也考慮使用者體驗的問題,有些程式就希望將這個列表框隱藏起來。想要隱藏起來,就需要程式去遍曆手機裡的IAP列表,並選擇其中一個的IAP ID值,然後進行撥號。

遍曆有兩種方法,第一種是訪問資料庫CommDb,需要開啟IAP表,其中的COMMDB_NAME欄位是串連名字,COMMDB_ID即撥號所需的IAP ID值;第二種是用一個封裝好的類CApSelect,ISP類型和Bearer類型都設定為All Type,就可以調用CApSelect::Name()和CApSelect::Uid()擷取每個IAP的名字和ID值。

擷取手機上的所有IAP之後,接下來就是選擇具體哪一個IAP的問題了。一般撥號分cmwap和cmnet兩種,wifi不在本文討論範圍之內。我看了下CApSelect提供的方法,只能擷取IAP的ISP類型和Bearer類型,雖然一直沒弄清楚這兩個值具體是什麼用的,但經測試貌似是不能作為區分cmwap和cmnet的,那麼最終還是要訪問資料庫的。

回顧一下代碼建立一個IAP的過程,cmnet和cmwap都會建立好幾個相關的表,唯一區別在於cmwap需要在PROXIES表裡相關的記錄中添加Proxy 位址(10.0.0.172)和連接埠(80)等資訊,cmnet則需要刪除PROXIES表中那條相關的記錄。我看了了很多網上搜尋IAP的代碼,基本都是兩種:1、搜尋IAP表中的COMMDB_NAME欄位;2、搜尋OUTGOING_GPRS表中的GPRS_APN欄位,然後通過IAP的IAP_SERVICE欄位和OUTGOING_GPRS的COMMDB_ID欄位來關聯兩個表。一個是串連的名稱,一個是存取點的名稱,看其中是否有關鍵字“cmnet”和“cmwap”。但事實上這兩個值並不是固定的,使用者完全可以在設定-串連-存取點中將這兩個值改寫成任意的值。所以想靠名字來區分是非常不可靠的做法。有一種思路,是根據建立IAP時的不同處入手,看和OUTGOING_GPRS裡每條記錄所關聯的PROXIES表中的記錄是否存在,來區分,這個暫時還沒有測試過。

還有一種做法,就是當搜尋不到名為“cmnet”和“cmwap”的IAP時,程式自動建立一個,這樣以後的串連都可以使用這個IAP來撥號了。當然你得保證你的建立IAP程式是正確的。

不過話說回來,我覺得最好的方法還是由使用者自己來選擇存取點,也最保險。我看了下其他四款軟體,其中UcWeb、QQ2010、酷伴,撥號時都是會彈出存取點列表框的,而QQ遊戲大廳的做法更好,列表框也是自繪的,這樣也統一了程式UI風格。

建立IAP的代碼可以參考這個文章:

http://www.devdiv.net/bbs/viewthread.php?tid=24300

至於遍曆代碼參考這個:

http://hi.baidu.com/marktian/blog/item/e7faa0f0bec0eea7a50f52d0.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.