为了账号安全,请及时绑定邮箱和手机立即绑定

wifi或3g网络状态更改时的BroadcastReceiver

wifi或3g网络状态更改时的BroadcastReceiver

MYYA 2019-11-15 12:37:35
我有一个应用程序,每当手机连接到WiFi时,该应用程序都会更新数据库。我已经实现了Service并BroadcastReceiver可以运行Service(它会告诉我正在使用什么网络),但是问题是我不知道要在网络状态更改或何时连接到某种网络时在manifest文件中添加什么内容来启动BroadcastReceiver。网络的
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

这是我要在连接更改时得到通知的方法。您定义一个BroadCastReceiver来接收广播。


public class NetworkChangeReceiver extends BroadcastReceiver {

    @Override

    public void onReceive(Context context, Intent intent) {

        ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);


        boolean isConnected = wifi != null && wifi.isConnectedOrConnecting() ||

            mobile != null && mobile.isConnectedOrConnecting();

        if (isConnected) {

            Log.d("Network Available ", "YES");

        } else {

            Log.d("Network Available ", "NO");

        }

    }

}

您还必须BroadcastReceiver在清单文件中进行定义,并按过滤ConnectivityChange。


<receiver android:name=".NetworkChangeReceiver" >

        <intent-filter>

            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

        </intent-filter>

</receiver>


查看完整回答
反对 回复 2019-11-15
?
白板的微信

TA贡献1883条经验 获得超3个赞

补充@Dantalian的答案。从Android Nougat开始,您不应在清单上声明接收器,因为它不会接收CONNECTIVITY_ACTION广播。您应该改为使用Context.registerReceiver(Receiver, Intent)方法注册您的接收器。



查看完整回答
反对 回复 2019-11-15
  • 3 回答
  • 0 关注
  • 524 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信