Android中實現進入App之后檢查網絡狀態


1,注冊廣播,一般使用靜動態注冊,即當程序退出的時候廣播接受者就收不到消息使用方法context.registerReceiver()方法在MainActivity中的OnStart()方法中執行注冊,代碼:

IntentFilter intentFilter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        this.registerReceiver(judgeNetIsConnectedReceiver, intentFilter);

在onStop()方法中解除綁定

   

if(this.judgeNetIsConnectedReceiver!=null){
            this.unregisterReceiver(judgeNetIsConnectedReceiver);
        }

 

2,不多說,直接看我們的代碼,創建一個BroadCaseReceiver的子類

package com.example.queryencyclopediademo01.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.widget.Toast;

/**
 * 聲明網絡是否連接成功的廣播接受者
 * @author dell
 *
 */
public class JudgeNetIsConnectedReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        //得到是否沒有網絡連接成功
        boolean isNotConnected=intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
        
        if(!isNotConnected || judgeNetIsConnected(context)){
            Toast.makeText(context, "網絡連接成功!", Toast.LENGTH_LONG).show();
        }else{
            Toast.makeText(context, "您的網絡不給力,請檢查網絡!", Toast.LENGTH_LONG).show();
        }
    }

    /**
     * 判斷網絡連接是否成功
     * @param context 上下文對象
     * @return 網絡連接是否成功
     */
    public static boolean judgeNetIsConnected(Context context) {
        //得到連接管理器對象
        ConnectivityManager connectivityManager= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo= connectivityManager.getActiveNetworkInfo();
        if(networkInfo==null){
            return false;
        }
        
        
        return networkInfo.isConnected();
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM