- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试通过内部 wifi 网络将远程数据发送到 App Center,但它不是在此网络上发送,而是在任何外部网络上发送。调试时发现当设备连接到内部 wifi 时不会调用方法 onAvailable(),但当连接到任何外部 wifi 时会调用它。
以下代码来自 App Center SDK :
应用程序中心\实用程序\NetworkStateHelper.javaNetworkStateHelper.java。类 NetworkStateHelper -> 方法 reopen() --> public void onAvailable(Network network) 方法
示例代码:
private ConnectivityManager.NetworkCallback mNetworkCallback = new ConnectivityManager.NetworkCallback()
{
@Override
public void onAvailable(Network network) {
onNetworkAvailable(network);
}
@Override
public void onLost(Network network) {
onNetworkLost(network);
}
};
它应该在连接到内部 wifi 网络时调用 onAvailable 方法。
最佳答案
您必须将网络类型限制为Wifi。
<强>1。构建NetworkRequest
:
val networkRequest = getNetworkRequest()
private fun getNetworkRequest(): NetworkRequest {
return NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI) //here!!
.build()
}
<强>2。构建NetworkCallback
:
val networkCallback = getNetworkCallBack()
private fun getNetworkCallBack(): ConnectivityManager.NetworkCallback {
return object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) { //when Wifi is on
super.onAvailable(network)
Toast.makeText(requireContext(), "Wifi is on!", Toast.LENGTH_SHORT).show()
}
override fun onLost(network: Network) { //when Wifi 【turns off】
super.onLost(network)
Toast.makeText(requireContext(), "Wifi turns off!", Toast.LENGTH_SHORT).show()
}
}
}
<强>3。注册和注销:
fun getConnectivityManager() = requireContext().getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
override fun onResume() { //start monitoring when in the foreground
super.onResume()
getConnectivityManager().registerNetworkCallback(networkRequest, networkCallback)
}
override fun onPause() { //stop monitoring when not fully visible
super.onPause()
getConnectivityManager().unregisterNetworkCallback(networkCallback)
}
<强>4。不要忘记权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
关于android - 当设备连接到内部 wifi 网络时,不会触发 ConnectivityManager.NetworkCallback() -> onAvailable(Network network) 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54527301/
我正在使用 ConnectivityManager.NetworkCallback 在互联网可用或丢失时获取回调。以下是确定我需要收听哪种传输类型的配置。 manager.registerNetwor
根据官方文档,由于 getActiveNetworkInfo 现在在 Android 中已被弃用,我正在使用以下实现来获取有关 Internet 连接的回调。 private val connecti
我是 Android 世界的新手(作为用户,也是作为开发人员),并且我的 Android 应用程序在执行 myWebView.loadUrl("https://www.google.com") 时崩溃
在 deprecated class NetworkInfo有方法 isConnected() 和 isConnectedOrConnecting()。但在我们建议使用的类而不是已弃用的 Networ
我有一个设备,我的应用程序可以通过 WIFI 连接到该设备,但是该设备没有互联网。我实现了一个 NetworkCallback 来捕捉连接的变化,如下所示: public class Connecti
当我在应用程序中关闭互联网时它可以工作,但当我在没有互联网的情况下启动应用程序时它不起作用 private val networkCallback: ConnectivityManager.Netwo
在我的项目中,我想显示所使用的连接类型。例如,当用户启用 wifi 并打开应用程序时如果使用移动数据,则会显示启用 WiFi 的 toast,然后应显示另一个 toast。 我使用以下代码来显示类型,
前提是同时使用wifi和移动网络。 ConnectivityManager.NetworkCallback 的 onLost 函数在我关闭 wifi 后突然被调用。这就是 ConnectivityMa
我的 Android 应用程序已注册 ConnectivityManager onAvailable 和 onLost NetworkCallbacks,但在连接或断开 VPN(我正在使用 OpenV
我正在尝试将我的智能手机连接到由 IOT 设备制造的 AP。我将connectivitymanager.requestNetwork() 与NetworkCallback 一起使用,并且一切正常,直到
我正在尝试通过内部 wifi 网络将远程数据发送到 App Center,但它不是在此网络上发送,而是在任何外部网络上发送。调试时发现当设备连接到内部 wifi 时不会调用方法 onAvailable
我是一名优秀的程序员,十分优秀!