1

在我的 android-app 中,即使启用了蜂窝数据,我也需要通过没有互联网连接的 Wi-Fi 连接调用 API。我设法用下面的代码来处理这个问题:

NetworkRequest.Builder builder;
builder = new NetworkRequest.Builder();
builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
builder.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
final ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.requestNetwork(builder.build(), new ConnectivityManager.NetworkCallback() {
       @Override
       public void onAvailable(Network network) {
             connectivityManager.unregisterNetworkCallback(this);

             SendAPIRequest();
       }
});

到目前为止,一切都很好。但是,在某些 android 设备上,onAvailable 方法(以及因此的 SendAPIRequest 方法)有时会被调用多次,并非总是如此。如 developer.android.com 上所述,如果满足请求的网络发生更改,则可能会多次调用 networkcallback。(https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback.html#onAvailable(android.net.Network))但正如您在我的代码中看到的,我立即取消注册网络回调以防止此回调即使网络发生变化,也不会被再次调用。我究竟做错了什么?

4

0 回答 0