如何检查Android网络连接状态

摘要:
在发送任何HTTP请求前最好检查下网络连接状态,这样可以避免异常。这个教程将会介绍怎样在你的应用中检测网络连接状态。File-˃New-˃AndroidProject2.创建新项目后的第一步是要在AndroidManifest.xml文件中添加必要的权限。为了访问网络我们需要INTERNET权限为了检查网络状态我们需要ACCESS_NETWORK_STATE权限AndroidManifest.xml012728293.创建一个新的类,名为ConnectionDetector.java,并输入以下代码。只要按下这个按钮就会弹出一个alertdialog显示网络连接状态。在下面的代码中我用一个alertdialog来显示预期的状态信息。

在发送任何HTTP请求前最好检查下网络连接状态,这样可以避免异常。这个教程将会介绍怎样在你的应用中检测网络连接状态。

创建新的项目
1.在Eclipse IDE中创建一个新的项目并把填入必须的信息。File->New->Android Project
2.创建新项目后的第一步是要在AndroidManifest.xml文件中添加必要的权限。
  • 为了访问网络我们需要INTERNET权限
  • 为了检查网络状态我们需要ACCESS_NETWORK_STATE权限
AndroidManifest.xml
01<?xmlversion="1.0"encoding="utf-8"?>
02<manifestxmlns:android="http://schemas.android.com/apk/res/android"
03package="com.example.detectinternetconnection"
04android:versionCode="1"
05android:versionName="1.0">
06
07<uses-sdkandroid:minSdkVersion="8"/>
08
09<application
10android:icon="@drawable/ic_launcher"
11android:label="@string/app_name">
12<activity
13android:name=".AndroidDetectInternetConnectionActivity"
14android:label="@string/app_name">
15<intent-filter>
16<actionandroid:name="android.intent.action.MAIN"/>
17
18<categoryandroid:name="android.intent.category.LAUNCHER"/>
19</intent-filter>
20</activity>
21</application>
22
23<!-- Internet Permissions -->
24<uses-permissionandroid:name="android.permission.INTERNET"/>
25
26<!-- Network State Permissions -->
27<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
28
29</manifest>
3.创建一个新的类,名为ConnectionDetector.java,并输入以下代码。
ConnectionDetector.java
01packagecom.example.detectinternetconnection;
02
03importandroid.content.Context;
04importandroid.net.ConnectivityManager;
05importandroid.net.NetworkInfo;
06
07publicclassConnectionDetector {
08
09privateContext _context;
10
11publicConnectionDetector(Context context){
12this._context = context;
13}
14
15publicbooleanisConnectingToInternet(){
16ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
17if(connectivity !=null)
18{
19NetworkInfo[] info = connectivity.getAllNetworkInfo();
20if(info !=null)
21for(inti =0; i < info.length; i++)
22if(info[i].getState() == NetworkInfo.State.CONNECTED)
23{
24returntrue;
25}
26
27}
28returnfalse;
29}
30}
4.当你需要在你的应用中检查网络状态时调用isConnectingToInternet()函数,它会返回true或false。
1ConnectionDetector cd =newConnectionDetector(getApplicationContext());
2
3Boolean isInternetPresent = cd.isConnectingToInternet();// true or false
5.在这个教程中为了测试我仅仅简单的放置了一个按钮。只要按下这个按钮就会弹出一个 alert dialog 显示网络连接状态。
6.打开 res/layout 目录下的 main.xml 并创建一个按钮。
main.xml
01<?xmlversion="1.0"encoding="utf-8"?>
02<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
03android:layout_width="fill_parent"
04android:layout_height="fill_parent"
05android:orientation="vertical">
06
07<TextView
08android:layout_width="fill_parent"
09android:layout_height="wrap_content"
10android:text="Detect Internet Status"/>
11
12<Buttonandroid:id="@+id/btn_check"
13android:layout_height="wrap_content"
14android:layout_width="wrap_content"
15android:text="Check Internet Status"
16android:layout_centerInParent="true"/>
17
18</RelativeLayout>
7.最后打开你的 MainActivity 文件并粘贴下面的代码。在下面的代码中我用一个 alert dialog 来显示预期的状态信息。
01packagecom.example.detectinternetconnection;
02
03importandroid.app.Activity;
04importandroid.app.AlertDialog;
05importandroid.content.Context;
06importandroid.content.DialogInterface;
07importandroid.os.Bundle;
08importandroid.view.View;
09importandroid.widget.Button;
10
11publicclassAndroidDetectInternetConnectionActivityextendsActivity {
12
13// flag for Internet connection status
14Boolean isInternetPresent =false;
15
16// Connection detector class
17ConnectionDetector cd;
18
19@Override
20publicvoidonCreate(Bundle savedInstanceState) {
21super.onCreate(savedInstanceState);
22setContentView(R.layout.main);
23
24Button btnStatus = (Button) findViewById(R.id.btn_check);
25
26// creating connection detector class instance
27cd =newConnectionDetector(getApplicationContext());
28
29/**
30* Check Internet status button click event
31* */
32btnStatus.setOnClickListener(newView.OnClickListener() {
33
34@Override
35publicvoidonClick(View v) {
36
37// get Internet status
38isInternetPresent = cd.isConnectingToInternet();
39
40// check for Internet status
41if(isInternetPresent) {
42// Internet Connection is Present
43// make HTTP requests
44showAlertDialog(AndroidDetectInternetConnectionActivity.this,"Internet Connection",
45"You have internet connection",true);
46}else{
47// Internet connection is not present
48// Ask user to connect to Internet
49showAlertDialog(AndroidDetectInternetConnectionActivity.this,"No Internet Connection",
50"You don't have internet connection.",false);
51}
52}
53
54});
55
56}
57
58/**
59* Function to display simple Alert Dialog
60* @param context - application context
61* @param title - alert dialog title
62* @param message - alert message
63* @param status - success/failure (used to set icon)
64* */
65publicvoidshowAlertDialog(Context context, String title, String message, Boolean status) {
66AlertDialog alertDialog =newAlertDialog.Builder(context).create();
67
68// Setting Dialog Title
69alertDialog.setTitle(title);
70
71// Setting Dialog Message
72alertDialog.setMessage(message);
73
74// Setting alert dialog icon
75alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail);
76
77// Setting OK Button
78alertDialog.setButton("OK",newDialogInterface.OnClickListener() {
79publicvoidonClick(DialogInterface dialog,intwhich) {
80}
81});
82
83// Showing Alert Message
84alertDialog.show();
85}
86}
运行并测试下你的程序吧!你将会得到类似下面的结果。
如何检查Android网络连接状态
如何检查Android网络连接状态

免责声明:文章转载自《如何检查Android网络连接状态》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇多对话框窗口 同时显示 相互重叠 点击切换(置顶)实现statsvn,代码统计下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

&amp;lt;Android基础&amp;gt;(一)

第一章Android 2003年10月,Andy Rubin等人创办了Android公司。2005年8月谷歌收购。 1.1 Android全貌 1.1.1 Android系统架构 1.Linux内核层:为Android设备的各种硬件提供底层驱动。如:显示驱动,音频驱动,蓝牙驱动,WiFi驱动,电源管理。 2.系统运行库层:c/c++库为Android层提供...

Tomcat学习总结(2)——Tomcat使用详解

一、Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件。 如果想修改Tomcat服务器的启动端口,则可以在server.xml配置文件中的Connector节点进行的端口修改 例如:将Tomcat服务器的启动端口由默认的8080改成8081端口 Tomcat服务器启动端口默认配置 1...

【Android】WebDav For Android

最近在写一个云备份功能,参考了一下市面上的软件,发现有一种采用WebDav协议的云备份成本比较低,故特地研究一下使用。 服务器提供商是使用国内的坚果云,还是非常良心的。 坚果云官网:https://www.jianguoyun.com 注册账号后,点击账户信息,安全选项中即可看到 第三方应用管理 这里需要三个东西,服务器地址、账户、密码(这个密码是你为应用...

Neo4J图库的基础介绍(二)-图库开发应用

我们接着Neo4J图库的基础介绍(一)继续介绍Neo4J图库。 JAX-RS是一个用于构建REST资源的Java API,可以使用JAX-RS注解装饰每一个扩展类,从而让服务器处理对应的http请求,附加注解可以用来控制请求和响应的格式,http头和URI模板的格式。 下面看一个服务器扩展实现的示例,允许客户端请求社交网络的两个成员之间的距离 @Pa...

Asp.net mvc与PHP的Session共享的实现

最近在做的一个ASP.NET MVC的项目,要用到第三方的php系统,为了实现两个系统的互联互通。决定将两者的session打通共享。让asp.net mvc 和php 都能正常访问和修改Session内容。 在决定实现之前,先搜索了一下院子里有没有相类似的文章,对于跨语言的程序互通,有两种方案: (1) SSO单点登录,其实就是把用户名和密码传给另一个系...

flutter 生成aar文件,嵌入原生android项目

适用于flutter单独开发,android项目单独开发的场景 1:将flutter项目打包成aar文件,详情见官方文档:https://flutter.cn/docs/development/add-to-app/android/add-flutter-screen 2:在原生android项目文件中,项目根目录app/build.gradle文件中添加...