您的位置:首页 > 理论基础 > 计算机网络

android 第一更(判断网络状态)

2015-09-15 17:37 459 查看
判断网络状态 三种 没有网络 wifi网络 GPRS网络 这一章先写页面的判断 明天开始加上服务和广播 让网络判断在后台进行 让程序随时能监控网络状态。

上代码

package getui.com.networkstatus;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

/**
* Created by yf on 2015/9/15.
*/
public class NetworkActivity extends Activity {
Button btn;
TextView tv;
public static ConnectivityManager connectivityManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.btn);
tv = (TextView) findViewById(R.id.tv);
connectivityManager = (ConnectivityManager) this
.getSystemService(Context.CONNECTIVITY_SERVICE);
if(checkNetworkState()){
btn.setVisibility(View.VISIBLE);
}else{
btn.setVisibility(View.INVISIBLE);
isNetworkAvailable();
}
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = null;
/**
* 判断手机系统的版本!如果API大于10 就是3.0+ 因为3.0以上的版本的设置和3.0以下的设置不一样,调用的方法不同
*/
if (android.os.Build.VERSION.SDK_INT > 10) {
intent = new Intent(
android.provider.Settings.ACTION_WIFI_SETTINGS);
} else {
intent = new Intent();
ComponentName component = new ComponentName(
"com.android.settings",
"com.android.settings.WirelessSettings");
intent.setComponent(component);
intent.setAction("android.intent.action.VIEW");
}
startActivity(intent);
}
});

}
private static boolean checkNetworkState() {
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetInfo == null||!activeNetInfo.isAvailable()) {
return true;
}
return false;
}
/**
* 网络已经连接,然后去判断是wifi连接还是GPRS连接 设置一些自己的逻辑调用
*/
private void isNetworkAvailable() {

NetworkInfo.State gprs = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
.getState();
NetworkInfo.State wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.getState();
if (gprs == NetworkInfo.State.CONNECTED || gprs == NetworkInfo.State.CONNECTING) {
Toast.makeText(this, "wifi is open! gprs", Toast.LENGTH_SHORT)
.show();
}
// 判断为wifi状态下才加载广告,如果是GPRS手机网络则不加载!
if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {
Toast.makeText(this, "wifi is open! wifi", Toast.LENGTH_SHORT)
.show();
}
}
@Override
protected void onRestart() {//设置完成后返回到本页面要进行再次判断网络状态
super.onRestart();
checkNetworkState();
}
}


main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="invisible"
android:background="@null"
android:text="设置网络连接"/>
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网络连接状态:"/>
</LinearLayout>


因为需要网络 所以要添加网络的权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络 wi-fi gprs