您的位置:首页 > 移动开发 > Android开发

android判断手机是否联网

2015-01-16 15:02 375 查看
如果拟开发一个网络应用的程序,首先考虑是否接入网络,在Android手机中判断是否联网可以通过 ConnectivityManager 类的isAvailable()方法判断,首先获取网络通讯类的实例

ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); ,

使用cwjManager.getActiveNetworkInfo().isAvailable(); 来返回是否有效,

如果为True则表示当前Android手机已经联网,可能是WiFi或GPRS、HSDPA等等,具体的可以通过ConnectivityManager 类的getActiveNetworkInfo() 方法判断详细的接入方式,需要注意的是有关调用需要加入

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 这个权限,

android开发网提醒大家在真机上Market和Browser程序都使用了这个方法,来判断是否继续,同时在一些网络超时的时候也可以检查下网络连接是否存在,以免浪费手机上的电力资源。

代码部分:

package cn.com.jdsc;

import java.net.InetAddress;

import java.net.NetworkInterface;

import java.util.Enumeration;

import cn.com.jdsc.BuyActivity.btnRegisterClick;

import android.app.Activity;

import android.content.Context;

import android.net.ConnectivityManager;

import android.net.NetworkInfo;

import android.os.Bundle;

import android.text.TextUtils;

import android.util.Log;

import android.widget.TextView;

public class LinkState extends Activity {

boolean state;

TextView stateTextView;

private int nType;

int netType = -1;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.link);

stateTextView = (TextView) findViewById(R.id.link_textview);

getState();

}

private void getState() {

// TODO Auto-generated method stub

ConnectivityManager cwjManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo networkInfo = cwjManager.getActiveNetworkInfo();

// state = cwjManager.getActiveNetworkInfo().isAvailable();

// if (state == true) {

// stateTextView.setText("网咯状态已链接");

// }

// else{

// stateTextView.setText("网咯状态没有链接");

// }

// }

// statesss = networkInfo.getType();

//

// if (statesss == 1) {

// stateTextView.setText("wap网咯");

// } else {

//

// }

// -1:没有网络 1:WIFI网络2:wap网络3:net网络

if (networkInfo == null) {

stateTextView.setText("没有网络");

}

nType = networkInfo.getType();

if (nType == ConnectivityManager.TYPE_MOBILE) {

Log.e("networkInfo.getExtraInfo()",

"networkInfo.getExtraInfo() is "

+ networkInfo.getExtraInfo());

if (networkInfo.getExtraInfo().toLowerCase().equals("cmnet")) {

netType = 3;

stateTextView.setText("net网络");

}

else {

netType = 2;

stateTextView.setText("wap网络");

}

}

else if (nType == ConnectivityManager.TYPE_WIFI) {

netType = 1;

stateTextView.setText("WIFI网络");

// * NETWORK_TYPE_CDMA 网络类型为CDMA

// * NETWORK_TYPE_EDGE 网络类型为EDGE

// * NETWORK_TYPE_EVDO_0 网络类型为EVDO0

// * NETWORK_TYPE_EVDO_A 网络类型为EVDOA

// * NETWORK_TYPE_GPRS 网络类型为GPRS

// * NETWORK_TYPE_HSDPA 网络类型为HSDPA

// * NETWORK_TYPE_HSPA 网络类型为HSPA

// * NETWORK_TYPE_HSUPA 网络类型为HSUPA

// * NETWORK_TYPE_UMTS 网络类型为UMTS

}

}

// private String getPhoneIp() {

// try {

// for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {

// NetworkInterface intf = en.nextElement();

// for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {

// InetAddress inetAddress = enumIpAddr.nextElement();

// if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {

// //if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet6Address) {

// return inetAddress.getHostAddress().toString();

// }

// }

// }

// } catch (Exception e) {

// }

// return "";

// }

}

布局文件:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/link_textview"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="TextView"

android:textColor="#345671"

android:textSize="20sp"/>

</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: