文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Symbian之IAP(Internet Access Point)(转)

Symbian之IAP(Internet Access Point)(转)

时间:2010-10-11  来源:冰岛

最近比较空闲,一直在优化之前的移植代码。之前拨号接口一直有那么点问题,所以今天重新看了下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表里相关的记录中添加代理地址(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

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载