【发布时间】:2018-07-01 11:48:01
【问题描述】:
我正在创建一个 Android 应用程序,该应用程序通过 WiFi 连接到另一台设备,该设备通过套接字连接发送和接收数据。我希望能够在与此设备保持连接的同时使用我的蜂窝数据做其他事情(例如浏览)。
在 iOS 设备上,将网络设置更改为静态并将路由器字段留空似乎可行。但是在我的 Android 设备(运行 Android 7.0 的三星 Galaxy Note 5)上,如果我将其留空,它不会让我保存网络设置。
我曾尝试使用 Mobiwol、Super Download 和 Speedify 等 3rd 方应用程序(似乎只有 Speedify 有效),但我希望能够在不需要这些应用程序的情况下做到这一点。
我还尝试在开发人员设置中打开“保持移动数据打开”,以及仅切换到我的蜂窝数据的“智能网络开关”,因此我的应用无法运行,因为它在技术上没有连接到 WiFi。
更新:在我的应用程序中通过 WiFi 连接时,我设法让蜂窝网络工作(感谢 Remy Lebeau 和 How to stay connected through mobile network after WIFI is connected on Android?)。请参阅下面的代码。
现在我希望能够在后台应用程序(例如通知)中使用蜂窝数据,或者如果我想打开浏览器等。有没有办法做到这一点?
NetworkRequest.Builder req = new NetworkRequest.Builder();
req.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
req.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
ConnectivityManager.NetworkCallback networkCallback = new
ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
connectivityManager.bindProcessToNetwork(network)
}
};
connectivityManager.requestNetwork(req.build(), networkCallback);
【问题讨论】:
标签: java android sockets networking wifi