为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

LEATH 2019-10-08 10:43:05
我已经有了这段侦听连接性更改的代码-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连接更改会引起问题。
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

更新:


如果目标为Android 7.0(API级别24)及更高版本的应用在清单中声明了广播接收器,则不会接收CONNECTIVITY_ACTION广播。如果应用向Context.registerReceiver()注册其BroadcastReceiver,并且该上下文仍然有效,则它们仍将接收CONNECTIVITY_ACTION广播。


您需要通过registerReceiver()方法注册接收器:


 IntentFilter intentFilter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");

 mCtx.registerReceiver(new NetworkBroadcastReceiver(), intentFilter);


查看完整回答
反对 回复 2019-10-08
?
莫回无

TA贡献1865条经验 获得超7个赞

api 28+中已弃用 ConnectivityAction 。相反registerDefaultNetworkCallback,只要支持api 24+,就可以使用。


在科特林:


val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

connectivityManager?.let {

    it.registerDefaultNetworkCallback(object : ConnectivityManager.NetworkCallback() {

        override fun onAvailable(network: Network) {

            //take action when network connection is gained

        }

        override fun onLost(network: Network?) {

            //take action when network connection is lost

        }

    })

}


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 533 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信