简体   繁体   English

网络更改的广播接收器未执行

[英]Network Changed Broadcast Receiver is not executing

I need a Broadcast Receiver name "NetworkReciver.java" that should execute when Internet is Connected or Disconnected. 我需要一个广播接收器名称“ NetworkReciver.java”,该名称应在Internet连接或断开连接时执行。 But it is noit executing. 但这是执行。

Manifest permissions 清单权限

 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


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

In MainActivity.java requested permissions 在MainActivity.java中请求权限

String[] permissionsRequired = new String[]{Manifest.permission.SET_ALARM,
     Manifest.permission.INTERNET,
     Manifest.permission.ACCESS_NETWORK_STATE,};
     // Since these are Normal Permissions
     ActivityCompat.requestPermissions(this, permissionsRequired, 1);

NetworkReciever.java: NetworkReciever.java:

public class NetworkReciever extends BroadcastReceiver 
{

         @Override
         public void onReceive(Context context, Intent intent)
         {
                Log.i("KAMLESH", "Network REceiver Alarm Set in Hair Style");
         }
}

From documentation 文档

Apps targeting Android 7.0 (API level 24) and higher do not receive CONNECTIVITY_ACTION broadcasts if they declare the broadcast receiver in their manifest. 如果目标为Android 7.0(API级别24)及更高版本的应用在清单中声明了广播接收器,则不会接收CONNECTIVITY_ACTION广播。 Apps will still receive CONNECTIVITY_ACTION broadcasts if they register their BroadcastReceiver with Context.registerReceiver() and that context is still valid. 如果应用向Context.registerReceiver()注册其BroadcastReceiver ,并且该上下文仍然有效,则它们仍将接收CONNECTIVITY_ACTION广播。


It means you need to register your receiver dynamically, not from manifest. 这意味着您需要动态注册接收者,而不是从清单中注册。 Read Dynamically register/unregister a broadcast receiver in android which will give you the idea about dynamic way. 阅读在Android中动态注册/注销广播接收器,这将为您提供有关动态方式的想法。


NOTE : The CONNECTIVITY_ACTION is deprecated since API 28. There are few other options introduced and you can find in the same url CONNECTIVITY_ACTION 注意:自API 28起不推荐使用CONNECTIVITY_ACTION引入的其他选项很少,您可以在同一网址中找到CONNECTIVITY_ACTION

you must register NetworkReciever this broadcast receiver like registerReceiver(new NetworkReciever()); 您必须像该registerReceiver(new NetworkReciever())一样注册NetworkReciever这个广播接收器; in any activity 在任何活动中

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM