Android开发3g、wap、net的区别

1.通过CMNET可以获得完全的Internet访问权,可以访问pop和imap等众多互联网服务;

2.通过CMWAP只能访问网页,无法访问pop和imap等众多互联网服务。

(1) 为什么会有两个接入点?
  在国际上,通常只有一种GPRS接入方式,为什么在中国会有CMWAP和CMNET两兄弟呢?(彩信之所以单独配置接入点是因为彩信服务需要连接专用的服务器,在这里不作探讨。)
  其实,CMWAP 和 CMNET 只是中国移动人为划分的两个GPRS接入方式。前者是为手机WAP上网而设立的,后者则主要是为PC、笔记本电脑、PDA等利用GPRS上网服务。它们在实现方式上并没有任何差别,但因为定位不同,所以和CMNET相比,CMWAP便有了部分限制,资费上也存在差别。

(2) 什么是WAP?
  WAP只是一种GPRS应用模式,它与GRPS的接入方式是无关的。WAP应用采用的实现方式是“终端+WAP网关+WAP服务器”的模式,不同于一般Internet的“终端+服务器”的工作模式。主要的目的是通过WAP网关完成WAP-WEB的协议转换以达到节省网络流量和兼容现有WEB应用的目的。
  WAP网关从技术的角度讲,只是一个提供代理服务的主机,它不一定由网络运营商提供。但据我所知,中国移动GPRS网络目前只有唯一的一个WAP网关:10.0.0.172,有中国移动提供,用于WAP浏览(HTTP)服务。有一点需要注意,WAP网关和一般意义上的局域网网关是有差别的,标准的WAP网关仅仅实现了HTTP代理的功能,并未完成路由、NAT等局域网网关的功能。这就决定了它在应用上所受到的限制。

为应用程序增加Http协议代理

  1. try {  
  2.    String proxyHost = android.net.Proxy.getDefaultHost();  
  3.    if (proxyHost != null) {//如果是wap方式,要加网关  
  4.     java.net.Proxy p = new java.net.Proxy(java.net.Proxy.Type.HTTP, new InetSocketAddress(  
  5.       android.net.Proxy.getDefaultHost(), android.net.Proxy.getDefaultPort()));  
  6.     conn = (HttpURLConnection) new URL(url).openConnection(p);  
  7.    } else {  
  8.     conn = (HttpURLConnection) new URL(url).openConnection();  
  9.    }  


(3)无论是移动、联通还是电信,都至少提供了两种类型的的APN:WAP方式和NET方式。其中NET方式跟WIFI方式一样,无需任何设置,可自由访问所有类型网站,而WAP方式,需要手机先设置代理服务器和端口号等信息,并且只能访问HTTP协议类型的网站

移动和联通的WAP代理服务器都是10.0.0.172,端口号是80;而电信的WAP代理服务器是10.0.0.200,端口号是80。

Android系统中,对于APN网络的API是隐藏的,因此获取手机的APN设置,需要通过ContentProvider来进行数据库查询,查询的URI地址是:

取得全部的APN列表:content://telephony/carriers;

取得当前设置的APN:content://telephony/carriers/preferapn;

取得current=1的APN:content://telephony/carriers/current;

由于需要设置Proxy的情况为使用运营商网络,所以代码一开始即使用通过Context获得ConnectivityManager,执行ConnectivityManager.getActiveNetworkInfo()获取当前可用的网络。在有可用网络的情况下,判断其类型,如果networkInfo.getType()返回值为ConnectivityManager.TYPE_MOBILE,则需要设置Proxy;在返回值为ConnectivityManager.TYPE_WIFI的情况下则跳过设置Proxy的步骤。

对HttpURLConnection设置Proxy需要指定代理IP及端口号,android.net.Proxy解决了这个问题。执行Proxy.getDefaultHost()和Proxy.getDefaultPort()将返回代理主机的IP及开放端口号,并以这两个信息传参构造InetSocketAddress。InetSocketAddress为IP套接地址,其主要形式可由IP地址与端口号组合而成,亦可用主机域名加端口号组合而成,这种情况下将尝试将主机域名解析为IP地址。


移动网络的判断:

  1. / 注意二:    
  2.           // 判断是否电信wap:    
  3.           //不要通过getExtraInfo获取接入点名称来判断类型,    
  4.           // 因为通过目前电信多种机型测试发现接入点名称大都为#777或者null,    
  5.           // 电信机器wap接入点中要比移动联通wap接入点多设置一个用户名和密码,    
  6.           // 所以可以通过这个进行判断!    
  7.   
  8.           final Cursor c = mContext.getContentResolver().query(    
  9.               PREFERRED_APN_URI, nullnullnullnull);    
  10.           if (c != null) {    
  11.             c.moveToFirst();    
  12.             final String user = c.getString(c    
  13.                 .getColumnIndex("user"));    
  14.             if (!TextUtils.isEmpty(user)) {    
  15.               Log.i("",    
  16.                   "=====================>代理:"    
  17.                       + c.getString(c    
  18.                           .getColumnIndex("proxy")));    
  19.               if (user.startsWith(CTWAP)) {    
  20.                 Log.i("""=====================>电信wap网络");    
  21.                 return TYPE_CT_WAP;    
  22.               }    
  23.             }    
  24.           }    
  25.           c.close();    
  26.                
  27.                
  28.           // 注意三:    
  29.           // 判断是移动联通wap:    
  30.           // 其实还有一种方法通过getString(c.getColumnIndex("proxy")获取代理ip    
  31.           //来判断接入点,10.0.0.172就是移动联通wap,10.0.0.200就是电信wap,但在    
  32.           //实际开发中并不是所有机器都能获取到接入点代理信息,例如魅族M9 (2.2)等...    
  33.           // 所以采用getExtraInfo获取接入点名字进行判断    
  34.                
  35.           String netMode = mobNetInfoActivity.getExtraInfo();    
  36.           Log.i("""netMode ================== " + netMode);    
  37.           if (netMode != null) {    
  38.             // 通过apn名称判断是否是联通和移动wap    
  39.             netMode=netMode.toLowerCase();    
  40.             if (netMode.equals(CMWAP) || netMode.equals(WAP_3G)    
  41.                 || netMode.equals(UNIWAP)) {    
  42.               Log.i("""=====================>移动联通wap网络");    
  43.               return TYPE_CM_CU_WAP;    
  44.             }    
  45.   
  46.           }    
  47.   
  48.         } 
如何判断2G网络和3G网络:待续。。。


参考:http://blog.csdn.net/shichaosong/article/details/8722823

     http://www.jizhuomi.com/android/example/32.html

        http://www.linuxidc.com/Linux/2012-08/67980.htm




转载于:https://my.oschina.net/tedyin/blog/175641

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值