Android移动数据开/关监听器

时间:2016-03-20 18:59:04

标签: android broadcastreceiver listener

我想知道是否有办法知道用户何时启用或禁用手机的移动数据。我不想看看我的手机当前是否通过移动网络连接。我试图确定用户何时启用/禁用移动网络上的数据访问,即使此时连接了wifi。

这个想法是能够知道用户离开家后是否没有数据。

我尝试过这样的广播:

    <receiver android:name=".MyReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>

它有效。但问题是,如果用户在连接到Wifi时禁用或启用数据,则没有任何事件,因此离开家时将断开设备。

我需要知道这一点,因为我想提醒一位父母,孩子离开了这所房子。我只能在设备连接到互联网时执行此操作。所以,如果wifi丢失,我无法告诉家长。我们的想法是告诉家长,在有wifi的情况下,移动数据在离开家之前就已关闭。

2 个答案:

答案 0 :(得分:0)

您可以在类中扩展广播接收器,然后在onReceive方法中扩展:

    NetworkInfo networkInfo = conn.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    if(networkInfo!=null && networkInfo.isAvailable())
        //do something

答案 1 :(得分:0)

可以使用[{3}}

中回答的反射来完成

它会告诉您启用或禁用移动数据。

如上所述,它可能不适用于Lollipop +

点击此处查看Lollipop测试方式: How to tell if 'Mobile Network Data' is enabled or disabled (even when connected by WiFi)?

编辑: 实现您正在寻找的内容的一种方法是定期检查移动数据的状态,如上所述,例如,每分钟或10秒(如果你想更有效)。

编辑2: 您也可以尝试使用此处所述的ContentObserver Android API call to determine user setting "Data Enabled",以获得类似于&#34; BroadcastReceiver&#34;方法