在 Android M 上通过 wifi 请求
Request over wifi on Android M
我目前正在 Android 上开发应用程序,自从 Android 6.0 更新后我遇到了问题:我无法通过我的专用网络请求!
例如:
第 1 步:连接到不提供互联网连接的 wifi
第 2 步:在本地 ip(例如:192.168.1.168)
上发出请求(例如:POST 请求)
在任何 Android 版本(6.0 除外)上:我从我的本地 Web 服务器收到了响应
在 android M 上:没有响应:我的请求通过移动数据传输。
当我关闭移动数据时,请求通过 wifi 传输,我得到了正确的答案。
如果我错了请告诉我,但显然我无法通过以编程方式关闭数据或使用 api 23...
强制使用 wifi 来解决我在应用程序中的问题
如果有人感兴趣,这是我解决问题的方法:
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();
}
}
}
}
}
玩得开心!
我目前正在 Android 上开发应用程序,自从 Android 6.0 更新后我遇到了问题:我无法通过我的专用网络请求!
例如: 第 1 步:连接到不提供互联网连接的 wifi 第 2 步:在本地 ip(例如:192.168.1.168)
上发出请求(例如:POST 请求)在任何 Android 版本(6.0 除外)上:我从我的本地 Web 服务器收到了响应 在 android M 上:没有响应:我的请求通过移动数据传输。
当我关闭移动数据时,请求通过 wifi 传输,我得到了正确的答案。 如果我错了请告诉我,但显然我无法通过以编程方式关闭数据或使用 api 23...
强制使用 wifi 来解决我在应用程序中的问题如果有人感兴趣,这是我解决问题的方法:
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();
}
}
}
}
}
玩得开心!