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

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
}
})
}
添加回答
舉報