Android 检測网络是否连接[通俗易懂]

2022-07-07 17:59:52 浏览数 (1)

大家好,又见面了,我是全栈君。

权限:

<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE”/> <uses-permission android:name=”android.permission.ACCESS_WIFI_STATE”/>

代码例如以下:

package com.example.nettest;

import android.net.ConnectivityManager; import android.net.NetworkInfo.State; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.view.Menu; import android.widget.TextView; import android.widget.Toast;

public class MainActivity extends Activity {

private ConnectivityManager manager; private TextView tv; StringBuffer sb = new StringBuffer(256);

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

tv = (TextView) findViewById(R.id.textView1); checkNetworkState(); }

/** * 检測网络是否连接 * * @return */ private boolean checkNetworkState() { boolean flag = false; // 得到网络连接信息 manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // 去进行推断网络是否连接 if (manager.getActiveNetworkInfo() != null) { flag = manager.getActiveNetworkInfo().isAvailable(); } if (!flag) { setNetwork(); } else { isNetworkAvailable(); } tv.setText(sb.toString()); return flag; }

/** * 网络未连接时。调用设置方法 */ private void setNetwork() { Toast.makeText(this, “wifi is closed!”, Toast.LENGTH_SHORT).show(); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle(“网络提示信息”); builder.setMessage(“网络不可用。假设继续,请先设置网络!

“); builder.setPositiveButton(“设置”, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { 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_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); } });

builder.setNegativeButton(“取消”, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.create(); builder.show(); }

/** * 网络已经连接,然后去推断是wifi连接还是GPRS连接 设置一些自己的逻辑调用 */ private void isNetworkAvailable() {

State gprs = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) .getState(); State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI) .getState(); if (gprs == State.CONNECTED || gprs == State.CONNECTING) { Toast.makeText(this, “gprs is open! “, Toast.LENGTH_SHORT).show(); sb.append(“ngprs is open! “); } else { sb.append(“ngprs is closed! “); }

// 推断为wifi状态下才载入广告,假设是GPRS手机网络则不载入。 if (wifi == State.CONNECTED || wifi == State.CONNECTING) { Toast.makeText(this, “wifi is open! “, Toast.LENGTH_SHORT).show(); loadAdmob(); sb.append(“nwifi is open! “); } else { sb.append(“nwifi is closed! “); }

}

/** * 在wifi状态下 载入admob广告 */ private void loadAdmob() { Toast.makeText(getApplicationContext(), “ad is loding..”, 1).show(); sb.append(“nad is loding…”); } }

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116459.html原文链接:https://javaforall.cn

0 人点赞