如何检测用户何时在android中连接到wifi或移动互联网
Posted
技术标签:
【中文标题】如何检测用户何时在android中连接到wifi或移动互联网【英文标题】:How to detect when user connects to wifi or mobile internet in android 【发布时间】:2016-03-14 18:25:36 【问题描述】:我想在用户每次连接互联网时检查特定更新。我尝试了以下代码:
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 并重新连接广播接收器无法通知。感谢任何帮助。
【问题讨论】:
【参考方案1】:在我的应用中实施检查后,查看是否有任何互联网连接。你可以看看这个--
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();
希望这会有所帮助。
【讨论】:
兄弟,当用户重新连接到互联网时,我需要识别(接收)通知现在我正在使用一个间隔为 10 分钟的计时器,我想避免计时器,并且在用户重新连接到互联网时需要 @SigmaEquties -- 在这种情况下,您可以将返回语句更改为在它表示第一个连接的网络接口时返回,或者如果没有连接任何接口,则返回 null。我已经修改了上面的答案。请检查已编辑的部分。以上是关于如何检测用户何时在android中连接到wifi或移动互联网的主要内容,如果未能解决你的问题,请参考以下文章
设备在Android中连接到WiFi时如何获取蜂窝网络的IP地址
如果在 Android 中连接到 BLE 设备失败,如何通知用户?