目前绝大部分的Android App 都需要网络,在没有网络的情况下,很多App的很多功能无法使用甚至不能运行。在Application启动之前需要检查网络是否可用,给用户一些提示去设置网络连接或者弹出对话框告知用户,在缺乏网络支持的情况下,App无法正常启动。今天找到了一个检查网络连接的方法。记录如下:
1.NetWorkActivity
package com.augmentum.example;
import com.example.androidexample.R;
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class NetWorkActivity extends Activity {
private TextView txtView;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.network);
txtView = (TextView)findViewById(R.id.txtNetworkStatus);
btn = (Button)findViewById(R.id.btnCheckNetwork);
btn.setOnClickListener(listener);
}
private OnClickListener listener = new OnClickListener(){
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
if(isNetworkAvailable(NetWorkActivity.this)){
txtView.setText("Network is OK.");
}
else{
txtView.setText("Network is NOT OK.");
}
}
};
private boolean isNetworkAvailable(Context ctx) {
System.out.println("isNetworkAvailable started");
ConnectivityManager connMgr = (ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
System.out.println("isNetworkAvailable here");
if(connMgr!=null){
if(connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected() ||
connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected()){
System.out.println("isNetworkAvailable Ended");
return true;
}
}
System.out.println("isNetworkAvailable Ended");
return false;
}
}
这里面最主要的就是isNetworkAvailable方法,该方法负责检查网络连接是否正常,返回true或者false.
2.页面布局文件network.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btnCheckNetwork"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Click me to check network status"/>
<TextView
android:id="@+id/txtNetworkStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Network status"/>
</LinearLayout>
注意:
1.不要忘记把NetWorkActivity注册到AndroidManifest.xml中。
2.不要忘记添加 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>到AndroidManifest.xml中。
运行效果如下:
这个章节就介绍到这里,欢迎大家继续关注。