前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 检測网络是否连接[通俗易懂]

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

作者头像
全栈程序员站长
发布2022-07-07 17:59:52
5000
发布2022-07-07 17:59:52
举报

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

权限:

<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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年1月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档