java - 如何在android中检测用户何时连接到wifi或移动互联网

标签 java android

我想在用户每次连接到互联网时检查特定更新。我尝试了以下代码:

unfortunately app is getting stopped while checking for network

Broadcast receiver for checking internet connection in android app

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

已编辑::

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

希望这有帮助。

关于java - 如何在android中检测用户何时连接到wifi或移动互联网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35995188/

相关文章:

java - 碰撞检测 : What side was hit? [Java、Slick2D]

java - 绝对 uri : http://java. sun.com/jsp/jSTL/core 无法在 web.xml 或随此应用程序部署的 jar 文件中解析

android - ClipData 上的标签在哪里可见?

android - Spinner 是否有替代 TextChangedListener 的方法

java - Java Swing 中的 PNG 渲染错误(颜色深度低)

Java EE 单例反射注入(inject)

java - 找到未排序数组中所有缺失数字的最快方法是什么

android - 通过 monkeyrunner 脚本在 android 上使用 dd 创建虚拟文件

javascript - ionic 后退按钮的问题

android - transformClassesWithDexForDebug 以非零退出值 3 失败