Nin*_*les 5 java sockets networking android wifi
我正在创建一个 Android 应用程序,该应用程序通过 WiFi 连接到另一台设备,通过套接字连接发送和接收数据。我希望能够在与该设备保持连接的同时使用我的蜂窝数据执行其他操作(例如浏览)。
在 iOS 设备上,将网络设置更改为静态并将路由器字段留空似乎可行。但在我的 Android 设备(运行 Android 7.0 的三星 Galaxy Note 5)上,如果我将其留空,它不会让我保存网络设置。
我尝试过使用 Mobiwol、Super Download 和 Speedify(似乎只有 Speedify 有效)等 3rd 方应用程序,但我希望能够在不需要这些应用程序的情况下执行此操作。
我还尝试在开发者设置中打开“保持移动数据打开”,以及“智能网络开关”,它只会切换到我的蜂窝数据,因此我的应用程序无法工作,因为它在技术上并未连接到 WiFi。
更新:我设法让蜂窝网络在我的应用程序中通过 WiFi 连接时工作(感谢 Remy Lebeau 以及如何在 Android 上连接 WIFI 后通过移动网络保持连接?)。请参阅下面的代码。
现在我希望能够在后台应用程序(例如通知)中使用蜂窝数据,或者如果我想打开浏览器等。有没有办法做到这一点?
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);
Run Code Online (Sandbox Code Playgroud)
也许这个片段适合你,它会检查是否有 wifi 连接来完成这项工作,或者它会通过移动连接来完成这项工作
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobile = connManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isConnected()){
// If Wi-Fi connected
}
if (mobile.isConnected()) {
// If Internet connected
}
Run Code Online (Sandbox Code Playgroud)
请务必将其添加到您的清单中:
“android.permission.ACCESS_NETWORK_STATE”
thsi是一个检查wifi连接的方法,当return false时,您可以将移动数据添加为else语句
private boolean checkWifiOnAndConnected() {
WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (wifiMgr.isWifiEnabled()) { // Wi-Fi adapter is ON
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
if( wifiInfo.getNetworkId() == -1 ){
return false; // Not connected to an access point
}
return true; // Connected to an access point
}
else {
return false; // Wi-Fi adapter is OFF
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5114 次 |
| 最近记录: |