gpt4 book ai didi

android - ConnectivityManager.CONNECTIVITY_ACTION 已弃用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:54 24 4
gpt4 key购买 nike

在Android N中,官网提到“Apps targeting Android N do not receive CONNECTIVITY_ACTION broadcasts”。并且还提到 JobScheduler 可以用作替代方案。但是 JobScheduler 不提供与 CONNECTIVITY_ACTION 广播完全相同的行为。

在我的 Android 应用程序中,我使用这个广播来了解设备的网络状态。我想在 CONNECTIVITY_ACTION 广播的帮助下知道此状态是 CONNECTING 还是 CONNECTED 并且它最适合我的要求。

现在它已被弃用,有人可以建议我获取当前网络状态的替代方法吗?

最佳答案

将被弃用的是后台应用程序接收网络连接状态更改的能力。

作为David Wasser说如果应用程序组件被实例化(未销毁)并且您有registered your receiver programmatically,您仍然可以获得连接更改的通知及其上下文,而不是在 list 中进行。

或者您可以使用 NetworkCallback反而。特别是,您需要覆盖 onAvailable用于连接状态更改。

让我快速起草一个 fragment :

public class ConnectionStateMonitor extends NetworkCallback {

final NetworkRequest networkRequest;

public ConnectionStateMonitor() {
networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();
}

public void enable(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.registerNetworkCallback(networkRequest, this);
}

// Likewise, you can have a disable method that simply calls ConnectivityManager.unregisterNetworkCallback(NetworkCallback) too.

@Override
public void onAvailable(Network network) {
// Do what you need to do here
}
}

关于android - ConnectivityManager.CONNECTIVITY_ACTION 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45430598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com