在Android M上通过wifi请求

时间:2015-10-20 12:46:28

标签: android httprequest android-volley android-6.0-marshmallow

我目前正在Android上开发应用程序,自从Android 6.0更新后我遇到了问题:我无法通过我的专用网络请求!

ex: 第1步:连接到不提供互联网连接的wifi 第2步:在本地IP上发出请求(例如:POST请求)(例如:192.168.1.168)

在任何Android版本(6.0除外)上:我收到了本地网络服务器的回复 在Android M上:没有回复:我的请求是通过移动数据进行的。

当我关闭移动数据时,请求通过wifi传输,我得到了正确的答案。 告诉我,如果我错了,但显然我无法通过以编程方式关闭数据或强制使用api 23来解决我的问题......

1 个答案:

答案 0 :(得分:4)

如果有人有兴趣,我就是这样解决问题的方法:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
        ConnectivityManager connectivityManager = (ConnectivityManager) mCtx.getSystemService(Context.CONNECTIVITY_SERVICE);
        Network activeNetwork = connectivityManager.getActiveNetwork();
        if (WifiConnectionManager.getInstance(mCtx).isConnectedToALocalWifi()) {
            for (Network net : connectivityManager.getAllNetworks()) {
                if (!net.equals(activeNetwork)) {
                    connectivityManager.bindProcessToNetwork(net);
                    try {
                        net.openConnection(new URL(mCtx.getString(R.string.wifi_cam_url)));
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

        }

}

玩得开心!