1

实际上,在我的应用程序中,如果移动数据包开/关,我必须显示切换按钮开/关。

但是如果我的 WiFi 已经打开,我的本地广播无法收听移动数据包开/关事件。实际上,据我所知,如果我的 WiFi 开启,那么移动数据包启用和禁用事件永远不会影响连接状态。这就是为什么我的一些意图过滤器永远不会起作用的原因。

android.net.conn.CONNECTIVITY_CHANGE

我需要一个类似于 android.net.wifi.WIFI_STATE_CHANGED 的意图过滤器,以便每当移动数据包开启或关闭事件触发时,我的广播都可以轻松收听。我可以更改我的小部件。

4

2 回答 2

0

我不知道intent-filter打开或关闭移动数据时我们会收到什么,但下面的代码是确定移动数据是打开还是关闭。

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected())
    //mobile data is on
else 
    //mobile data is off

您可以做的是编写一个您自己的服务,该服务将不断运行上述代码。当移动数据打开时,您可以向您的活动发送广播,告诉您相同的内容。移动数据关闭时也是如此。

Edit1:- 即使连接了 Wi-Fi,这也有效。

Edit2:-使用时不要忘记添加ACCESS_NETWORK_STATE权限

于 2013-11-07T07:30:37.983 回答
0

我认为在您的应用程序中,您需要导入WifiManagerClass。 WifiManagerclass提供用于管理 Wi-Fi 连接的所有方面的主要 API。通过调用获取此类的实例 Context.getSystemService(Context.WIFI_SERVICE)

于 2013-11-07T07:12:41.800 回答