Android联网方式判断详解

简介:

   工作闲余时间学习了下其它项目中的联网方式判断,很简单的..今天有时间就放博客里面供自己记录,有需要的朋友可以同小马交流交流,希望大家多多指点。。谢谢。。

   主类:

 
  1. package com.xiaoma.www; 
  2.  
  3. import android.app.Activity; 
  4. import android.content.Context; 
  5. import android.content.Intent; 
  6. import android.database.Cursor; 
  7. import android.net.ConnectivityManager; 
  8. import android.net.NetworkInfo; 
  9. import android.net.NetworkInfo.State; 
  10. import android.net.Uri; 
  11. import android.os.Bundle; 
  12. import android.widget.TextView; 
  13.  
  14. /**   
  15. * @Title: JudgeNewWayDemoActivity.java 
  16. * @Package com.xiaoma.www 
  17. * @Description: 判断联网方式测试类 
  18. * @author MZH 
  19. */ 
  20. public class JudgeNewWayDemoActivity extends Activity { 
  21.      
  22.     private TextView text; 
  23.      
  24.     /** Called when the activity is first created. */ 
  25.     @Override 
  26.     public void onCreate(Bundle savedInstanceState) { 
  27.         super.onCreate(savedInstanceState); 
  28.         setContentView(R.layout.main); 
  29.          
  30.         /** 
  31.          * 下面列举几个可直接跳到联网设置的意图,供大家学习 
  32.          */ 
  33.         //startActivity(new Intent(android.provider.Settings.ACTION_APN_SETTINGS)); 
  34.         //startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS)); 
  35.          
  36.         //用下面两种方式设置网络 
  37.         //startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS)); 
  38.         //startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS)); 
  39.         init(); 
  40.     } 
  41.      
  42.     /** 
  43.      * 初始化实现 
  44.      */ 
  45.     private void init(){ 
  46.         text = (TextView)findViewById(R.id.waytext); 
  47.         /**获得系统级联网管理员对象*/ 
  48.         ConnectivityManager manager = (ConnectivityManager)this.getSystemService(CONNECTIVITY_SERVICE); 
  49.         NetworkInfo info = manager.getActiveNetworkInfo(); 
  50.         if(info == null){  //无网情况下 
  51.             //跳转到网络设置页面 
  52.             startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS)); 
  53.         }else{   //有网情况下 
  54.             if(info.isAvailable()){ //网络可用时 
  55.                 /**是手机自带的联网方式*/ 
  56.                 if(info.getType() == ConnectivityManager.TYPE_MOBILE){ 
  57.                         if(info.getState() == State.CONNECTED){ 
  58.                             text.setText(String.valueOf("手机网络可用并已连接"+"\n"+"连接网络方式为:\n"+info.getType()+",MOBILE")); 
  59.                         } 
  60.     
  61.                 /**WIFI联网方式*/ 
  62.                 }else
  63.                     text.setText(String.valueOf("连接网络方式为:"+info.getType()+",WI-FI")); 
  64.                     startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS)); 
  65.                 } 
  66.             }else
  67.                 text.setText(String.valueOf("手机网络不可用")); 
  68.             } 
  69.              
  70.         } 
  71.     } 
  72.      
  73.     /** 
  74.      * 临时写来练练的方法,大家可以跳过 
  75.      */ 
  76.     private void kkk(){ 
  77.         Uri uri = Uri.parse("content://telephony/carriers"); 
  78.         Cursor cr = getContentResolver().query(uri, nullnullnullnull);      
  79.         while(cr!=null && cr.moveToNext()){    
  80.             // APN id   
  81.             String id = cr.getString(cr.getColumnIndex("_id"));     
  82.             // APN name    
  83.             String apn = cr.getString(cr.getColumnIndex("apn"));   
  84.             // do other things...   
  85.         }   
  86.     } 
  87.      
  88.      
  89.     /** 
  90.      * 移动或联通ctwap cmwap 判断  这个方法朋友们可根据自己的需要使用,小马 
  91.      * 只是记在这个地方,供自己记录的,有需要的朋友可以交流讨论下..吼吼 
  92.      */ 
  93.     @SuppressWarnings("unused"
  94.     private void initWapState() { 
  95.         //ConnectivityManager: Class that answers queries about the state of network connectivity. 
  96.         ConnectivityManager conMan = (ConnectivityManager)  
  97.             getSystemService(Context.CONNECTIVITY_SERVICE); 
  98.         NetworkInfo netInfo = conMan.getActiveNetworkInfo(); 
  99.         if (netInfo != null) { 
  100.             String extraInfo = netInfo.getExtraInfo();//Report the extra information about the network state 
  101.             if (extraInfo != null) { 
  102.                 if (extraInfo.equals("cmwap")) { 
  103.                      
  104.                 }else if(extraInfo.equals("ctwap") || extraInfo.equals("#777")){ 
  105.                     
  106.                 } 
  107.             } 
  108.         } 
  109.     } 
  110.      
  111.      

   WIFI控制类:

 
  1. package com.xiaoma.www; 
  2.  
  3. import java.util.List; 
  4.  
  5. import android.content.Context; 
  6. import android.net.wifi.ScanResult; 
  7. import android.net.wifi.WifiConfiguration; 
  8. import android.net.wifi.WifiInfo; 
  9. import android.net.wifi.WifiManager; 
  10. import android.net.wifi.WifiManager.WifiLock; 
  11.  
  12. /**   
  13. * @Title: WifiCheckUtil.java 
  14. * @Package com.lg.lvguo.util 
  15. * @Description: WIFI控制类 
  16. * @author MZH 
  17. * @version FG1.0 
  18. */ 
  19. public class WifiCheckUtil { 
  20.     //定义WifiManager对象   
  21.     private WifiManager mWifiManager;   
  22.     //定义WifiInfo对象   
  23.     private WifiInfo mWifiInfo;   
  24.     //扫描出的网络连接列表   
  25.     private List<ScanResult> mWifiList;   
  26.     //网络连接列表   
  27.     private List<WifiConfiguration> mWifiConfiguration;   
  28.     //定义一个WifiLock   
  29.     WifiLock mWifiLock;   
  30.     //构造器   
  31.     public  WifiCheckUtil(Context context)   
  32.     {   
  33.         //取得WifiManager对象   
  34.         mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);   
  35.         //取得WifiInfo对象   
  36.         mWifiInfo = mWifiManager.getConnectionInfo();   
  37.     }  
  38.     //取到WIFI状态 
  39.     public int checkWifiState(){ 
  40.         return mWifiManager.getWifiState(); 
  41.     } 
  42.     //打开WIFI   
  43.     public void OpenWifi()   
  44.     {   
  45.         if (!mWifiManager.isWifiEnabled())   
  46.         {   
  47.             mWifiManager.setWifiEnabled(true);   
  48.                
  49.         }   
  50.     }   
  51.     //关闭WIFI   
  52.     public void CloseWifi()   
  53.     {   
  54.         if (!mWifiManager.isWifiEnabled())   
  55.         {   
  56.             mWifiManager.setWifiEnabled(false);    
  57.         }   
  58.     }   
  59.     //锁定WifiLock   
  60.     public void AcquireWifiLock()   
  61.     {   
  62.         mWifiLock.acquire();   
  63.     }   
  64.     //解锁WifiLock   
  65.     public void ReleaseWifiLock()   
  66.     {   
  67.         //判断时候锁定   
  68.         if (mWifiLock.isHeld())   
  69.         {   
  70.             mWifiLock.acquire();   
  71.         }   
  72.     }   
  73.     //创建一个WifiLock   
  74.     public void CreatWifiLock()   
  75.     {   
  76.         mWifiLock = mWifiManager.createWifiLock("Lock");   
  77.     }   
  78.     //得到配置好的网络   
  79.     public List<WifiConfiguration> GetConfiguration()   
  80.     {   
  81.         return mWifiConfiguration;   
  82.     }   
  83.     //指定配置好的网络进行连接   
  84.     public void ConnectConfiguration(int index)   
  85.     {   
  86.         //索引大于配置好的网络索引返回   
  87.         if(index > mWifiConfiguration.size())   
  88.         {   
  89.             return;   
  90.         }   
  91.         //连接配置好的指定ID的网络   
  92.         mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId, true);   
  93.     }   
  94.     public void StartScan()   
  95.     {   
  96.         mWifiManager.startScan();   
  97.         //得到扫描结果   
  98.         mWifiList = mWifiManager.getScanResults();   
  99.         //得到配置好的网络连接   
  100.         mWifiConfiguration = mWifiManager.getConfiguredNetworks();   
  101.     }   
  102.     //得到网络列表   
  103.     public List<ScanResult> GetWifiList()   
  104.     {   
  105.         return mWifiList;   
  106.     }   
  107.     //查看扫描结果   
  108.     public StringBuilder LookUpScan()   
  109.     {   
  110.         StringBuilder stringBuilder = new StringBuilder();   
  111.         for (int i = 0; i < mWifiList.size(); i++)   
  112.         {   
  113.             stringBuilder.append("Index_"+new Integer(i + 1).toString() + ":");   
  114.             //将ScanResult信息转换成一个字符串包   
  115.             //其中把包括:BSSID、SSID、capabilities、frequency、level   
  116.             stringBuilder.append((mWifiList.get(i)).toString());   
  117.             stringBuilder.append("/n");   
  118.         }   
  119.         return stringBuilder;   
  120.     }   
  121.     //得到MAC地址   
  122.     public String GetMacAddress()   
  123.     {   
  124.         return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();   
  125.     }   
  126.     //得到接入点的BSSID   
  127.     public String GetBSSID()   
  128.     {   
  129.         return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();   
  130.     }   
  131.     //得到IP地址   
  132.     public int GetIPAddress()   
  133.     {   
  134.         return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();   
  135.     }   
  136.     //得到连接的ID   
  137.     public int GetNetworkId()   
  138.     {   
  139.         return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();   
  140.     }   
  141.     //得到WifiInfo的所有信息包   
  142.     public String GetWifiInfo()   
  143.     {   
  144.         return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();   
  145.     }   
  146.     //添加一个网络并连接   
  147.     public void AddNetwork(WifiConfiguration wcg)   
  148.     {   
  149.         int wcgID = mWifiManager.addNetwork(wcg);    
  150.         mWifiManager.enableNetwork(wcgID, true);    
  151.     }   
  152.     //断开指定ID的网络   
  153.     public void DisconnectWifi(int netId)   
  154.     {   
  155.         mWifiManager.disableNetwork(netId);   
  156.         mWifiManager.disconnect();   
  157.     }  

   全局配置文件:

     

 
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     package="com.xiaoma.www" 
  4.     android:versionCode="1" 
  5.     android:versionName="1.0" > 
  6.  
  7.     <uses-sdk android:minSdkVersion="15" /> 
  8.  
  9.     <application 
  10.         android:icon="@drawable/ic_launcher" 
  11.         android:label="@string/app_name" > 
  12.         <activity 
  13.             android:name=".JudgeNewWayDemoActivity" 
  14.             android:label="@string/app_name" > 
  15.             <intent-filter> 
  16.                 <action android:name="android.intent.action.MAIN" /> 
  17.  
  18.                 <category android:name="android.intent.category.LAUNCHER" /> 
  19.             </intent-filter> 
  20.         </activity> 
  21.     </application> 
  22.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
  23. </manifest> 

    小DEMO源码小马放附件里面了,以备自己注意丢了,呵呵,有需要的朋友可下载下的,一起学!


     本文转自华华世界 51CTO博客,原文链接:http://blog.51cto.com/mzh3344258/791541,如需转载请自行联系原作者




相关文章
|
移动开发 Java Android开发
uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
1352 0
uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
|
编解码 Android开发
性能优化:Android中Bitmap内存大小优化的几种常见方式
性能优化:Android中Bitmap内存大小优化的几种常见方式
|
存储 编解码 前端开发
Android自定义控件(八)——详解创建bitmap的方式
Android自定义控件(八)——详解创建bitmap的方式
232 0
Android自定义控件(八)——详解创建bitmap的方式
|
XML Android开发 数据格式
Android自定义控件(五)——圆形头像最简单的实现方式
Android自定义控件(五)——圆形头像最简单的实现方式
442 0
Android自定义控件(五)——圆形头像最简单的实现方式
|
JSON Android开发 数据格式
android中Json数据保存方式
android中Json数据保存方式
167 0
|
存储 XML 设计模式
一个简单的Android网络访问全局码判断及通用数据解析方案
我们在开发中,网络请求经常会遇到各种错误码的判断。比如下面这样:
120 0
|
移动开发 Dart 前端开发
这么多移动开发的方式,传统方式写安卓、IOS 还有出路吗?
我所说的传统的方式是指,用 Java 或者 Kotlin 写安卓,用 Object-C 或者 Swift 写 IOS。
253 0
这么多移动开发的方式,传统方式写安卓、IOS 还有出路吗?
|
存储 缓存 Java
Android 百度语音合成 (含离线、在线、API合成方式,详细步骤+源码)
Android 百度语音合成 (含离线、在线、API合成方式,详细步骤+源码)
502 0
Android 百度语音合成 (含离线、在线、API合成方式,详细步骤+源码)
|
Android开发
android activity方式的dialog
android activity方式的dialog
150 0
android activity方式的dialog
|
Java Linux API
Framework笔记 | Android Framework用到了哪些IPC方式,分别在哪里用到
Framework笔记 | Android Framework用到了哪些IPC方式,分别在哪里用到