(1)在AndroidManifest.xml文件中添加必要的權限。
訪問網絡我們需要 INTERNET 權限
檢查網絡狀態我們需要 ACCESS_NETWORK_STATE 權限
- <!-- Internet Permissions -->
- <uses-permission android:name="android.permission.INTERNET" />
-
- <!-- Network State Permissions -->
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
(2)創建工具類ConnectionDetector.java
- import android.content.Context;
- import android.net.ConnectivityManager;
- import android.net.NetworkInfo;
-
- public class ConnectionDetector {
-
- private Context _context;
-
- public ConnectionDetector(Context context){
- this._context = context;
- }
- /**
- * 判斷網絡是否連接
- * @return true/false
- */
- public boolean isConnectingToInternet(){
- ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
- if (connectivity != null)
- {
- NetworkInfo[] info = connectivity.getAllNetworkInfo();
- if (info != null) {
- for (int i = 0; i < info.length; i++) {
- if (info[i].getState() == NetworkInfo.State.CONNECTED) {
- return true;
- }
- }
- }
- }
- return false;
- }
- }
(3)上面工具類的使用:當需要在你的應用中檢查網絡狀態時調用isConnectingToInternet()函數,返回true或false。
- ConnectionDetector cd = new ConnectionDetector(getApplicationContext());
- Boolean isInternetPresent = cd.isConnectingToInternet(); // true or false
(4)下面是一個小測試,實現單擊按鈕,彈出alert dialog顯示網絡連接狀態。
在res/layout/main.xml中創建一個按鈕
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
-
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Detect Internet Status" />
-
- <Button android:id="@+id/btn_check"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="Check Internet Status"
- android:layout_centerInParent="true"/>
-
- </RelativeLayout>
MainActivity.java
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
-
- public class AndroidDetectInternetConnectionActivity extends Activity {
-
- // flag for Internet connection status
- Boolean isInternetPresent = false;
-
- // Connection detector class
- ConnectionDetector cd;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- Button btnStatus = (Button) findViewById(R.id.btn_check);
-
- // creating connection detector class instance
- cd = new ConnectionDetector(getApplicationContext());
-
- /**
- * Check Internet status button click event
- */
- btnStatus.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
-
- // get Internet status
- isInternetPresent = cd.isConnectingToInternet();
-
- // check for Internet status
- if (isInternetPresent) {
- // Internet Connection is Present
- // make HTTP requests
- showAlertDialog(AndroidDetectInternetConnectionActivity.this, "Internet Connection",
- "You have internet connection", true);
- } else {
- // Internet connection is not present
- // Ask user to connect to Internet
- showAlertDialog(AndroidDetectInternetConnectionActivity.this, "No Internet Connection",
- "You don't have internet connection.", false);
- }
- }
- });
- }
-
- /**
- * Function to display simple Alert Dialog
- * @param context - application context
- * @param title - alert dialog title
- * @param message - alert message
- * @param status - success/failure (used to set icon)
- * */
- public void showAlertDialog(Context context, String title, String message, Boolean status) {
- AlertDialog alertDialog = new AlertDialog.Builder(context).create();
-
- // Setting Dialog Title
- alertDialog.setTitle(title);
-
- // Setting Dialog Message
- alertDialog.setMessage(message);
-
- // Setting alert dialog icon
- alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail);
-
- // Setting OK Button
- alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- }
- });
-
- // Showing Alert Message
- alertDialog.show();
- }
- }
(5)測試結果
Internet Connection
No Internet Connection