android 网络开发

来源:互联网 发布:windows商店app 编辑:程序博客网 时间:2024/06/06 07:22

 1.Android 监控网络状态


publicstatic boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivity == null) {
Log.i("NetWorkState""Unavailabel");
returnfalse
}else{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if(info != null) {
forinti = 0; i < info.length; i++) {
if(info<i>.getState() == NetworkInfo.State.CONNECTED) {
Log.i("NetWorkState""Availabel");
returntrue
}
}
}
}
returnfalse
}</i>

  上面这个方法就是判断网络是否连接的代码,返回true表示有网络,返回false表示无网络.  在Android网络应用程序开发中,经常要判断网络连接是否可用,因此经常有必要监听网络状态的变化.android的网络状态监听可以用BroadcastReceiver来接收网络状态改变的广  播,具体实现如下:
?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
@Override
publicvoid onReceive(Context context, Intent intent) {
Log.e(TAG,"网络状态改变");
booleansuccess = false
//获得网络连接服务
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
// State state = connManager.getActiveNetworkInfo().getState();
State state = connManager.getNetworkInfo(
ConnectivityManager.TYPE_WIFI).getState();// 获取网络连接状态
if(State.CONNECTED == state) { // 判断是否正在使用WIFI网络
success = true
}
state = connManager.getNetworkInfo(
ConnectivityManager.TYPE_MOBILE).getState();// 获取网络连接状态
if(State.CONNECTED != state) { // 判断是否正在使用GPRS网络
success = true
}
if(!success) {
Toast.makeText(LocationMapActivity.this"您的网络连接已中断", Toast.LENGTH_LONG).show();
}
}

  在Activity的onCreate中:
?
代码片段,双击复制
01
02
03
04
05
06
//注册网络监听
IntentFilter filter = newIntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mNetworkStateReceiver, filter);
//在Activity中的onDestroy中:'
unregisterReceiver(mNetworkStateReceiver);//取消监听



2.Android 判断网络状态

Android 判断网络状态这一应用技巧在实际应中是比较重要的。那么,在Android操作系统中,

如何能够正确的判断我们所连接的网络是否断开恩?今天我们就针对这一应用技巧进行一个详细的分析。

?
代码片段,双击复制
publicclass ConnectionChangeReceiver extends
BroadcastReceiver   
{   @Override   
publicvoid onReceive( Context context, Intent intent )   {   
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService
( Context.CONNECTIVITY_SERVICE );   NetworkInfo activeNetInfo = connectivityManager.
getActiveNetworkInfo();   
NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo
( ConnectivityManager.TYPE_MOBILE );   if( activeNetInfo != null)   
{   Toast.makeText( context, "Active Network Type : " +
activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();   
}   if( mobNetInfo != null)   
{   Toast.makeText( context, "Mobile Network Type : " +
mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();   
}   }   
}   < !-- Needed to check when the network connection changes -->


?
代码片段,双击复制
01
02
03
04
05
06
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<receiverandroid:name="com.blackboard.androidtest.
receiver.ConnectionChangeReceiver"android:label="NetworkConnection">
<intent-filter>
<actionandroid:name="android.net.conn.CONNECTIVITY_CHANGE"/>
< /intent-filter>



< /receiver>

Android判断网络状态的具体应用方法就为大家介绍到这里。


3.android获取当前网络连接状态以及调用网络配置界面


最近有这个应用需求,就查找了些网上资料并自己总结出了一个
android获取当前网络连接状态以及调用网络配置界面的工具类;
不多说,代码如下 TestNet.java类:

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.provider.Settings;
public class TestNet { 
  /**
  * 检测网络是否存在
  */
  public static void HttpTest(final Activity mActivity)
  {
   if( !isNetworkAvailable( mActivity) ){
    AlertDialog.Builder builders = new AlertDialog.Builder(mActivity);
    builders.setTitle("抱歉,网络连接失败,是否进行网络设置?");
    builders.setPositiveButton("确定", 
      new DialogInterface.OnClickListener(){
       public void onClick(DialogInterface dialog, int which)
       {
        //进入无线网络配置界面
        mActivity.startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));  
        //startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));  //进入手机中的wifi网络设置界面
       }
       });
     builders.setNegativeButton("取消",  
                   new DialogInterface.OnClickListener() {  
                       public void onClick(DialogInterface dialog, int whichButton) {  
                        //关闭当前activity
                        mActivity.finish();
                       }  
                   });  
     builders.show();
    }
   
  }
  //检测网络是否可用
  public static boolean isNetworkAvailable( Activity mActivity ) {
                        Context context = mActivity.getApplicationContext();
                        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                        if (connectivity == null) {
                        return false;
                        } else {
                        NetworkInfo[] info = connectivity.getAllNetworkInfo();
                        if (info != null) {
                        for (int i = 0; i < info.length; i++) {
                        if (info.getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                        }
                        }
                        }
                        }
                        return false;
                        }
}

另外记得在AndroidManifest.xml文件加上
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
这个访问网络权限。


============================
/**
* 获得当前联网类型wifi or mobile

* @return -1: 无连接类型; ConnectivityManager.TYPE_WIFI: wifi;
* ConnectivityManager.TYPE_MOBILE:mobile。判断网络连接状态为时mobile最好增加判断是net还是wap网络
*/
public int GetNetWorkType() {
if (getConnectManager() != null) {
NetworkInfo networkInfo = getConnectManager()
.getActiveNetworkInfo();
if (networkInfo != null)
return networkInfo.getType();
return -1;
} else {
return -1;
}
}