zoukankan      html  css  js  c++  java
  • 判断Android系统net和wap接入点的开发实例

    判断Android系统net和wap接入点的开发实例

     

           我们使用Android设备连接网络时,如果是wap接入点就需要设置代理,而电信和移动联通的代理并不相同,移动和联通的wap代理都是 10.0.0.172:80,电信的wap代理是10.0.0.200:80,所以进行Android开发时很有必要判断接入点。

           接入点的类型

           Net网络:运营商(移动联通电信)net网络,wifi,usb网络共享

           Wap网络:移动联通wap(代理相同:10.0.0.172:80),电信wap(代理:10.0.0.200:80)

           这样看来就可以抽象出三种网络类型:联通移动wap,电信wap,其他的都是net类型。

           接入点判断实例

            下面给出了接入点判断的实例代码,其中进行了一些注解,都是一些在实际项目开发中需要注意的地方。分享给大家以供参考。

    Java代码
      1. package com.johnson.utils;    
      2. import com.shoowc.R;    
      3. import android.app.Activity;    
      4. import android.content.Context;    
      5. import android.database.Cursor;    
      6. import android.net.ConnectivityManager;    
      7. import android.net.NetworkInfo;    
      8. import android.net.Uri;    
      9. import android.os.Bundle;    
      10. import android.text.TextUtils;    
      11. import android.util.Log;    
      12.   
      13. public class EX01_CheckApnTypeActivity extends Activity {    
      14.   /** Called when the activity is first created. */    
      15.   public static final    String CTWAP = "ctwap";    
      16.   public static final    String CMWAP = "cmwap";    
      17.   public static final    String WAP_3G = "3gwap";    
      18.   public static final    String UNIWAP = "uniwap";    
      19.   public static final    int TYPE_NET_WORK_DISABLED = 0;// 网络不可用    
      20.   public static final    int TYPE_CM_CU_WAP = 4;// 移动联通wap10.0.0.172    
      21.   public static final    int TYPE_CT_WAP = 5;// 电信wap 10.0.0.200    
      22.   public static final    int TYPE_OTHER_NET = 6;// 电信,移动,联通,wifi 等net网络    
      23.   public static Uri PREFERRED_APN_URI = Uri    
      24.   .parse("content://telephony/carriers/preferapn");    
      25.   @Override    
      26.   public void onCreate(Bundle savedInstanceState) {    
      27.     super.onCreate(savedInstanceState);    
      28.     setContentView(R.layout.main);    
      29.   
      30.     checkNetworkType(this);    
      31.   }    
      32.   
      33.   /***   
      34.     * 判断Network具体类型(联通移动wap,电信wap,其他net)   
      35.     *      
      36.     * */    
      37.   public static int checkNetworkType(Context mContext) {    
      38.     try {    
      39.       final ConnectivityManager connectivityManager = (ConnectivityManager) mContext    
      40.           .getSystemService(Context.CONNECTIVITY_SERVICE);    
      41.       final NetworkInfo mobNetInfoActivity = connectivityManager    
      42.           .getActiveNetworkInfo();    
      43.       if (mobNetInfoActivity == null || !mobNetInfoActivity.isAvailable()) {    
      44.             
      45.   
      46.         // 注意一:    
      47.         // NetworkInfo 为空或者不可以用的时候正常情况应该是当前没有可用网络,    
      48.         // 但是有些电信机器,仍可以正常联网,    
      49.         // 所以当成net网络处理依然尝试连接网络。    
      50.         // (然后在socket中捕捉异常,进行二次判断与用户提示)。    
      51.             
      52.         Log.i("""=====================>无网络");    
      53.         return TYPE_OTHER_NET;    
      54.       } else {    
      55.   
      56.         // NetworkInfo不为null开始判断是网络类型    
      57.   
      58.         int netType = mobNetInfoActivity.getType();    
      59.         if (netType == ConnectivityManager.TYPE_WIFI) {    
      60.           // wifi net处理    
      61.           Log.i("""=====================>wifi网络");    
      62.           return TYPE_OTHER_NET;    
      63.         } else if (netType == ConnectivityManager.TYPE_MOBILE) {    
      64.                
      65.   
      66.           // 注意二:    
      67.           // 判断是否电信wap:    
      68.           //不要通过getExtraInfo获取接入点名称来判断类型,    
      69.           // 因为通过目前电信多种机型测试发现接入点名称大都为#777或者null,    
      70.           // 电信机器wap接入点中要比移动联通wap接入点多设置一个用户名和密码,    
      71.           // 所以可以通过这个进行判断!    
      72.   
      73.           final Cursor c = mContext.getContentResolver().query(    
      74.               PREFERRED_APN_URI, nullnullnullnull);    
      75.           if (c != null) {    
      76.             c.moveToFirst();    
      77.             final String user = c.getString(c    
      78.                 .getColumnIndex("user"));    
      79.             if (!TextUtils.isEmpty(user)) {    
      80.               Log.i("",    
      81.                   "=====================>代理:"    
      82.                       + c.getString(c    
      83.                           .getColumnIndex("proxy")));    
      84.               if (user.startsWith(CTWAP)) {    
      85.                 Log.i("""=====================>电信wap网络");    
      86.                 return TYPE_CT_WAP;    
      87.               }    
      88.             }    
      89.           }    
      90.           c.close();    
      91.                
      92.                
      93.           // 注意三:    
      94.           // 判断是移动联通wap:    
      95.           // 其实还有一种方法通过getString(c.getColumnIndex("proxy")获取代理ip    
      96.           //来判断接入点,10.0.0.172就是移动联通wap,10.0.0.200就是电信wap,但在    
      97.           //实际开发中并不是所有机器都能获取到接入点代理信息,例如魅族M9 (2.2)等...    
      98.           // 所以采用getExtraInfo获取接入点名字进行判断    
      99.                
      100.           String netMode = mobNetInfoActivity.getExtraInfo();    
      101.           Log.i("""netMode ================== " + netMode);    
      102.           if (netMode != null) {    
      103.             // 通过apn名称判断是否是联通和移动wap    
      104.             netMode=netMode.toLowerCase();    
      105.             if (netMode.equals(CMWAP) || netMode.equals(WAP_3G)    
      106.                 || netMode.equals(UNIWAP)) {    
      107.               Log.i("""=====================>移动联通wap网络");    
      108.               return TYPE_CM_CU_WAP;    
      109.             }    
      110.   
      111.           }    
      112.   
      113.         }    
      114.       }    
      115.     } catch (Exception ex) {    
      116.       ex.printStackTrace();    
      117.       return TYPE_OTHER_NET;    
      118.     }    
      119.   
      120.     return TYPE_OTHER_NET;    
      121.   
      122.   }    

    life is a jounery,yes
  • 相关阅读:
    成绩等级
    函数值
    最大数
    温度转换
    何时使用hadoop fs、hadoop dfs与hdfs dfs命令
    Hadoop常见异常及其解决方案
    Hadoop2.4.1入门实例:MaxTemperature
    单机/伪分布式Hadoop2.4.1安装文档
    用Apache Ivy实现项目里的依赖管理
    【Nutch2.2.1基础教程之2.1】集成Nutch/Hbase/Solr构建搜索引擎之一:安装及运行【单机环境】
  • 原文地址:https://www.cnblogs.com/CaptainLin/p/3586294.html
Copyright © 2011-2022 走看看