在项目中,经常需要判断是否有网络连接。最近学习了如何判断软件是否联网,如果没有联网,弹出提示信息,连接网络。
效果:
(1)联网情况下:
(2)不联网情况下:
(3)点击“检测设置”:
源码下载:http://xiazai.jb51.net/201605/yuanma/MyApplication(jb51.net).rar
判断我们的软件是否联网,看代码吧:
/** * 检测网络连接 * * @param con * @return */ public boolean isNetworkAvailable(Context con) { ConnectivityManager cm = (ConnectivityManager) con .getSystemService(Context.CONNECTIVITY_SERVICE); if (cm == null) return false; NetworkInfo netinfo = cm.getActiveNetworkInfo(); if (netinfo == null) { return false; } if (netinfo.isConnected()) { return true; } return false; }
如果没有联网,弹出提示框,提示设置网络连接:
/** * 提示设置网络连接对话框 * * @param context */ public void showNetDialog(final Context context) { mMaterialDialog = new MaterialDialog(context) .setMessage("世界上最遥远的距离就是没网") .setPositiveButton("检查设置", new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = null; try { @SuppressWarnings("deprecation") String sdkVersion = android.os.Build.VERSION.SDK; if (Integer.valueOf(sdkVersion) > 10) { intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); } else { intent = new Intent(); ComponentName comp = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings"); intent.setComponent(comp); intent.setAction("android.intent.action.VIEW"); } context.startActivity(intent); } catch (Exception e) { e.printStackTrace(); } mMaterialDialog.dismiss(); } }).setNegativeButton("取消", new View.OnClickListener() { @Override public void onClick(View v) { mMaterialDialog.dismiss(); } }); mMaterialDialog.show(); }
怎么做判断处理:
/** * 判断是否联网 */ private void checkNet() { if(!mCheckNetWork.isNetworkAvailable(getApplication())){ mCheckNetWork.showNetDialog(MainActivity.this); }else { Toast.makeText(MainActivity.this, "有网络,哈哈",Toast.LENGTH_SHORT).show(); } }
具体代码如下:
MainActivity.java
package com.bzu.gxs.chectnetwork; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity implements View.OnClickListener{ private CheckNetWork mCheckNetWork =new CheckNetWork(); private Button btn_check; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } /** * 点击事件 * * @param view */ @Override public void onClick(View view) { switch (view.getId()){ case R.id.btn_check: checkNet(); } } /** * 判断是否联网 */ private void checkNet() { if(!mCheckNetWork.isNetworkAvailable(getApplication())){ mCheckNetWork.showNetDialog(MainActivity.this); }else { Toast.makeText(MainActivity.this, "有网络,哈哈",Toast.LENGTH_SHORT).show(); } } /** * 初始化 */ private void init() { btn_check = (Button) findViewById(R.id.btn_check); btn_check.setOnClickListener(this); } }
CheckNetWork.java
package com.bzu.gxs.chectnetwork; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.media.browse.MediaBrowser; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Build; import android.view.View; import me.drakeet.materialdialog.MaterialDialog; /** * 网络检测 * Created by GXS on 2016/5/13. */ public class CheckNetWork { private MaterialDialog mMaterialDialog; /** * 检测网络连接 * * @param con * @return */ public boolean isNetworkAvailable(Context con) { ConnectivityManager cm = (ConnectivityManager) con .getSystemService(Context.CONNECTIVITY_SERVICE); if (cm == null) return false; NetworkInfo netinfo = cm.getActiveNetworkInfo(); if (netinfo == null) { return false; } if (netinfo.isConnected()) { return true; } return false; } /** * 提示设置网络连接对话框 * * @param context */ public void showNetDialog(final Context context) { mMaterialDialog = new MaterialDialog(context) .setMessage("世界上最遥远的距离就是没网") .setPositiveButton("检查设置", new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = null; try { @SuppressWarnings("deprecation") String sdkVersion = android.os.Build.VERSION.SDK; if (Integer.valueOf(sdkVersion) > 10) { intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); } else { intent = new Intent(); ComponentName comp = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings"); intent.setComponent(comp); intent.setAction("android.intent.action.VIEW"); } context.startActivity(intent); } catch (Exception e) { e.printStackTrace(); } mMaterialDialog.dismiss(); } }).setNegativeButton("取消", new View.OnClickListener() { @Override public void onClick(View v) { mMaterialDialog.dismiss(); } }); mMaterialDialog.show(); } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.bzu.gxs.chectnetwork.MainActivity"> <Button android:id="@+id/btn_check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试"/> </RelativeLayout>
注意:需要在清单文件AndroidManifest.xml中加入
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Android中判断手机是否联网实例,包括了Android中判断手机是否联网实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android中判断手机是否联网的方法,分享给大家供大家参考。具体步骤如下: 首先在AndroidManifest.xml中添加与连接网络相关的权限: 判断联网的代码如下: 希望本文所述对大家的Android程序设计有所帮助。
问题内容: 像往常一样,在使用Volley之前,我使用AsyncTask来检查我的互联网状态。 这是我在AsyncTask中所做的: 这是函数: 如何使用Volley实现这一目标? 问题答案: 没有为该请求引发的NoConnection错误。请捕捉错误
本文向大家介绍通过JS判断联网类型和连接状态的实现代码,包括了通过JS判断联网类型和连接状态的实现代码的使用技巧和注意事项,需要的朋友参考一下 中国的移动网络环境复杂,为了给用户带去更好访问体验,开发者希望能了解用户当前的联网方式,然后给用户一个符合当前网络环境的请求结果。 W3C的规范中给出了一个方法来获得现在的网络状态navigator.connection;根据Working Draft 2
可确认目前连接的接入点信息或网络的连接状态。
本文向大家介绍Android中判断网络连接状态的方法,包括了Android中判断网络连接状态的方法的使用技巧和注意事项,需要的朋友参考一下 App判断用户是否联网是很普遍的需求,实现思路大概有下面几种 利用Android自带的ConnectivityManager类 有时候连上了wifi,但这个wifi是上不了网的,我们可以通过ping www.baidu.com来判断是否可以上网 也可以利用ge
对于网络连接和断开连接,我正在使用科尔多瓦插件即科尔多瓦插件网络信息1.3.0“网络信息”。 还有我的cordova 6.4.0版 当我启动应用程序并使用凭据登录时,我正在断开wifi连接,此时会触发弹出事件,但一段时间后,我打开wifi,此时不会触发弹出事件。 这是我的密码。 当我断开wifi时,onOffline工作正常onOffline事件触发。但当wifi重新连接时,onOnline事件不