簡體   English   中英

如何在Android中檢測用戶何時連接到wifi或移動互聯網

[英]How to detect when user connects to wifi or mobile internet in android

當用戶每次連接到互聯網時,我想檢查特定的更新。我嘗試了以下代碼:

不幸的是,在檢查網絡時app正在停止

在Android應用程序中檢查互聯網連接的廣播接收器

的Manifest.xml

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<receiver android:name=".UpdateReceiver" >
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

Java的

public class UpdateReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectivityManager = (ConnectivityManager) 
        context.getSystemService(Context.CONNECTIVITY_SERVICE );
        NetworkInfo activeNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        boolean isConnected = activeNetInfo != null && activeNetInfo.isConnectedOrConnecting();   
        if (isConnected)       
            Log.i("NET", "connecte" +isConnected);   
        else Log.i("NET", "not connecte" +isConnected);
    }
}

我的問題是這些代碼只接收一次,如果用戶斷開wifi並重新連接BroadcastReceiver無法通知。任何幫助表示贊賞。

在我的應用中實施檢查后,即可查看是否有互聯網連接。 您可以看一下-

public class ConnectionDetector {

private Context context;

public ConnectionDetector(Context cont){
this.context = cont;
}

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;
}
}

您可以在OnCreate方法中初始化此類的對象。

最后,在上傳文件之前調用此類的方法。

Boolean isInternetConnected = cd.isConnectingToInternet();
if (isInternetConnected)
{
    //perform your job here.
}

EDITED ::

NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM