android 第一更(判断网络状态)
2015-09-15 17:37
459 查看
判断网络状态 三种 没有网络 wifi网络 GPRS网络 这一章先写页面的判断 明天开始加上服务和广播 让网络判断在后台进行 让程序随时能监控网络状态。
上代码
main.xml文件
因为需要网络 所以要添加网络的权限
上代码
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"/>