我正在构建一个Android应用程序,需要通过无法访问互联网的WiFi网络进行通信.问题是,即使连接WiFi,当wifi网络上没有连接互联网时,机器人选择使用蜂窝/移动数据.
我已经阅读了许多关于该问题的帖子,其中许多涉及生根设备,但生产应用程序无法实现这一点(根设备不是一种选择).其他解决方案(如我的代码bellow)建议使用bindProcessToNetwork()哪个在我的Sony Z2上完美运行,但在我测试的其他设备上没有(所有运行6.0.1)
private void bindToNetwork() {
final ConnectivityManager connectivityManager = (ConnectivityManager) mActivity.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new NetworkRequest.Builder();
//set the transport type do WIFI
builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
connectivityManager.requestNetwork(builder.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
connectivityManager.bindProcessToNetwork(null);
if (barCodeData.getSsid().contains("screenspace")) {
connectivityManager.bindProcessToNetwork(network);
}
} else {
//This method was deprecated in API level 23
ConnectivityManager.setProcessDefaultNetwork(null);
if (barCodeData.getSsid().contains("screenspace")) {
ConnectivityManager.setProcessDefaultNetwork(network);
}
}
connectivityManager.unregisterNetworkCallback(this);
}
});
}
}
Run Code Online (Sandbox Code Playgroud) Android Lollipop当Wi-Fi您连接到没有Internet访问权限时,似乎默认为Mobile Data .有人知道这是否在某处正式记录?
我们有一个应用程序需要连接到Wi-Fi没有Internet的机器.我们的客户现在报告Wi-Fi连接不再起作用,因为手机会自动切换到LTE.
我的理解是手机仍然保持Wi-Fi连接,但LTE除了提供对互联网的访问之外(棒棒糖 - 功能 - 聚光灯 - 机器人 - 现在 - 默认 - 移动 - 数据 - 当-wi-fi-has-no- internet-access-signal-icon-added-a-for-no-connection).
我对这个功能的理解是错误的吗?如果是这样,有没有办法强制使用没有互联网的Wi-Fi?我在开发人员文档中找不到任何相关内容.
任何帮助都非常感谢.
我正在开发一个通过Wifi连接到OBD2设备的Android应用程序,应用程序可以读取速度,转速,发动机冷却液温度等详细信息等.因此,wifi仅用于连接OBD2设备(它没有连接设施)互联网,仅用于与当地客户沟通).我还需要一个用于Web服务的Internet连接.但在连接我的wifi后,我无法通过Android中的移动数据网络连接互联网.
类似的应用程序也是为iOS开发的.在iOS中,我可以通过Wifi(静态Wifi设置)和来自我的蜂窝网络的Internet连接使用设备.这意味着使用一些静态IP配置我的wifi我能够在iOS中使用移动数据网络进行Internet连接.
但在Android中,如果我使用静态wifi并检查Internet连接,则无法使用.
如何通过在Android中配置wifi设置来并行或以其他任何方式使用Wifi和Internet连接?
在我的应用中,我正在连接到具有自己的WiFi网络的设备。在android 6及更高版本中,即使没有互联网连接,系统也会在几秒钟后询问我是否要连接至该网络。只有批准该消息后,我才能连接到我的设备。我尝试以编程方式连接到网络,而不是强迫用户每次都手动进行设置并进行连接。我使用以下代码连接到设备网络:
private void connectToWiFi(WifiManager wifiManager, String wifiName) {
WifiConfiguration configuration = new WifiConfiguration();
configuration.SSID = "\"" + wifiName + "\"";
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wifiManager.addNetwork(configuration);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for (WifiConfiguration i : list) {
if (i.SSID != null && i.SSID.equals("\"" + wifiName + "\"")) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
并尝试强制该应用使用WiFi连接,而不是我正在使用的蜂窝数据:
NetworkRequest.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new NetworkRequest.Builder();
builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
connectivityManager.requestNetwork(builder.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
String ssid = wifiManager.getConnectionInfo().getSSID();
if …Run Code Online (Sandbox Code Playgroud)