Android:互联网连接更改监听器

我已经有了这段侦听连接性更改的代码-

public class NetworkStateReceiver extends BroadcastReceiver

{

public void onReceive(Context context, Intent intent)

{

Log.d("app","Network connectivity change");

if(intent.getExtras() != null)

{

NetworkInfo ni = (NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);

if(ni != null && ni.getState() == NetworkInfo.State.CONNECTED)

{

Log.i("app", "Network " + ni.getTypeName() + " connected");

}

}

if(intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE))

{

Log.d("app", "There's no network connectivity");

}

}

}

我使用此代码检查Internet连接-Internet Check

但是问题是,如果网络突然失去了互联网连接而没有任何连接更改,则此代码将无用。有什么方法可以创建广播接收器侦听器以更改Internet连接吗?我有一个Web应用程序,突然的Internet连接更改会引起问题。

回答:

尝试这个

public class NetworkUtil {

public static final int TYPE_WIFI = 1;

public static final int TYPE_MOBILE = 2;

public static final int TYPE_NOT_CONNECTED = 0;

public static final int NETWORK_STATUS_NOT_CONNECTED = 0;

public static final int NETWORK_STATUS_WIFI = 1;

public static final int NETWORK_STATUS_MOBILE = 2;

public static int getConnectivityStatus(Context context) {

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();

if (null != activeNetwork) {

if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)

return TYPE_WIFI;

if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)

return TYPE_MOBILE;

}

return TYPE_NOT_CONNECTED;

}

public static int getConnectivityStatusString(Context context) {

int conn = NetworkUtil.getConnectivityStatus(context);

int status = 0;

if (conn == NetworkUtil.TYPE_WIFI) {

status = NETWORK_STATUS_WIFI;

} else if (conn == NetworkUtil.TYPE_MOBILE) {

status = NETWORK_STATUS_MOBILE;

} else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) {

status = NETWORK_STATUS_NOT_CONNECTED;

}

return status;

}

}

对于广播接收器

public class NetworkChangeReceiver extends BroadcastReceiver {

@Override

public void onReceive(final Context context, final Intent intent) {

int status = NetworkUtil.getConnectivityStatusString(context);

Log.e("Sulod sa network reciever", "Sulod sa network reciever");

if ("android.net.conn.CONNECTIVITY_CHANGE".equals(intent.getAction())) {

if (status == NetworkUtil.NETWORK_STATUS_NOT_CONNECTED) {

new ForceExitPause(context).execute();

} else {

new ResumeForceExitPause(context).execute();

}

}

}

}

不要忘记将其放入你的AndroidManifest.xml

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.INTERNET" />

<receiver

android:name="NetworkChangeReceiver"

android:label="NetworkChangeReceiver" >

<intent-filter>

<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />

</intent-filter>

</receiver>

希望这会为你加油!

以上是 Android:互联网连接更改监听器 的全部内容, 来源链接: utcz.com/qa/403185.html

回到顶部