调用ConnectivityManager.unregisterNetworkCallback

时间:2018-06-05 13:45:12

标签: android android-connectivitymanager

我想仅通过WiFi强制使用网络API请求,我使用ConnectivityManager并使用以下代码:

NetworkRequest.Builder request = new NetworkRequest.Builder();
request.addTransportType(NetworkCapabilities.TRANSPORT_WIFI); // to use WiFi channel only
ConnectivityManager connectivityManager =
                (ConnectivityManager) getApplication().getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.registerNetworkCallback(request.build(), new ConnectivityManager.NetworkCallback() {

                    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
                    @Override
                    public void onAvailable(Network network) {
                        ConnectivityManager.setProcessDefaultNetwork(network);

                        String url = "http://192.168.10.1/sysinfo";
                        APIRequestManager.StringRequestGET(SampleActivity.this, url, MyActivity.this); // from APIRequestManager i m triggering Volley String-request
                        connectivityManager.unregisterNetworkCallback(this); // this line causing the issue, if removed, its working fine but getting another exception : java.lang.IllegalArgumentException: Too many NetworkRequests filed 
                    }
                });

我在Volley回调中遇到以下错误/异常:

com.android.volley.NoConnectionError: java.net.SocketException: Machine is not on the network.

如果我删除了connectivityManager.unregisterNetworkCallback(this);,那么它的工作正常,但我得到另一个例外:java.lang.IllegalArgumentException: Too many NetworkRequests filed

有人遇到过这个问题吗?请帮忙。

0 个答案:

没有答案