Java 是否有意图检测网络使用情况,无论是3G还是Wifi?
我已经研究了一段时间,但一直无法找到具体的解决方案 我试图检测用户何时开始使用互联网(3G、Wifi)。(或即将开始的情况会更好) 是否有人知道是否有意图可以检测到有人开始使用网络?我想做的是,一旦用户开始使用他们的互联网,不管它是3G还是Wifi,都要运行一些代码 我一直在研究ConnectivityManager和Trafficstats(),但到目前为止还没有找到解决方案。我不仅仅是想看看是否有可用的连接 我一直在考虑的一个解决方案是创建我自己的意图,但我找不到任何关于如何创建您自己的意图过滤器的好文档。(我看到的大多数教程都说要使用/指定您自己的意图,但却忽略了说明如何创建意图)因此,我假设这是一件人们认为不值得一提的简单事情 使用意图背后的想法是,我可以触发代码,以便在用户使用互联网时执行,而不仅仅是连接到互联网。这比有一个持续执行的循环寻找发送的rx/tx字节更可取 如果有人有任何想法和示例代码,我们将不胜感激Java 是否有意图检测网络使用情况,无论是3G还是Wifi?,java,android,networking,connection,android-intent,Java,Android,Networking,Connection,Android Intent,我已经研究了一段时间,但一直无法找到具体的解决方案 我试图检测用户何时开始使用互联网(3G、Wifi)。(或即将开始的情况会更好) 是否有人知道是否有意图可以检测到有人开始使用网络?我想做的是,一旦用户开始使用他们的互联网,不管它是3G还是Wifi,都要运行一些代码 我一直在研究ConnectivityManager和Trafficstats(),但到目前为止还没有找到解决方案。我不仅仅是想看看是否有可用的连接 我一直在考虑的一个解决方案是创建我自己的意图,但我找不到任何关于如何创建您自己的意图
干杯我不知道这是否有帮助,但通过这段代码,我试图找到设备何时进入无网络状态。我相信你可以修改它来检测它是3G还是WiFi
我不知道这是否有帮助,但通过这段代码,我试图找到设备何时进入无网络状态。我相信你可以修改它来检测它是3G还是WiFi
从我的一个项目中复制 您可以将其与Banda25提到的连接状态更改相结合,我认为您已经完成了
public boolean isOnWifi() {
Log.d(TAG, "Checking if we are on wifi");
final ConnectivityManager mgrConn = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
Log.d(TAG, "Retrieved connectivity manager");
final NetworkInfo network = mgrConn.getActiveNetworkInfo();
Log.d(TAG, "Retrieved network info: " + network);
final boolean result = network != null && network.getType() == ConnectivityManager.TYPE_WIFI;
Log.d(TAG, "Result : " + result);
return result;
}
复制自我的一个项目 您可以将其与Banda25提到的连接状态更改相结合,我认为您已经完成了
public boolean isOnWifi() {
Log.d(TAG, "Checking if we are on wifi");
final ConnectivityManager mgrConn = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
Log.d(TAG, "Retrieved connectivity manager");
final NetworkInfo network = mgrConn.getActiveNetworkInfo();
Log.d(TAG, "Retrieved network info: " + network);
final boolean result = network != null && network.getType() == ConnectivityManager.TYPE_WIFI;
Log.d(TAG, "Result : " + result);
return result;
}
看看问题是否有用。看看问题是否有用。嘿,贾勒克,谢谢你的快速回复。我想做的是,一旦用户开始使用他们的互联网,不管它是3G还是Wifi,都要运行一些代码。使用intent背后的想法是,我可以触发代码在事件上执行,而不是让一个不断执行的循环寻找发送的rx/tx字节。除非我弄错了,否则我相信你们的代码,在并没有网络连接的情况下,只会告诉我我是在使用wifi,还是并没有网络连接。我可以假设用户使用3G或Wifi。我会更新我的问题,让它更清楚。谢谢你的快速回复。我想做的是,一旦用户开始使用他们的互联网,不管它是3G还是Wifi,都要运行一些代码。使用intent背后的想法是,我可以触发代码在事件上执行,而不是让一个不断执行的循环寻找发送的rx/tx字节。除非我弄错了,否则我相信你们的代码,在并没有网络连接的情况下,只会告诉我我是在使用wifi,还是并没有网络连接。我可以假设用户使用3G或Wifi。我会更新我的问题,让它更清楚。干杯Hanks Banda25,我可以假设用户总是连接到3G或Wifi,我需要能够检测到用户何时开始通过3G或Wifi使用大量带宽。是的,我知道你的问题,我想告诉你的是,有一种方法可以在onDataConnectionStateChanged方法中检测到这一点。如果你只是添加此代码并放置日志,你会注意到你会得到一些不同的参数。感谢Banda25,我可以假设用户总是连接到3G或Wifi,我需要能够检测到用户何时开始通过3G或Wifi使用大量带宽。耶,我明白你的问题,我想告诉你的是,有一种方法可以在onDataConnectionStateChanged方法中检测到这一点。如果您只是添加这段代码并放置日志,您会注意到您会得到一些不同的参数。