Reputation: 706
I am trying to use a BroadcastReceiver
as an inner class to track the network state but I got the exception in the title. What should I do to fix this problem?
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isAvailable() || mobile.isAvailable()) {
setupData();
Log.d("Netowk Available ", "Flag No 1");
}
}
}
Upvotes: 40
Views: 59206
Reputation: 574
just make your Receiver Class static like:
public [static] class ReceiverClass extends BroadcastReceiver
Upvotes: 1
Reputation: 2814
A non-static inner class cannot be registered via the AndroidManifest.xml
. You can either:
Register it dynamically as outlined in this thread, and remove the empty constructor.
Or,
Make your inner class static, and register it in the AndroidManifext.xml
.
Upvotes: 16
Reputation: 3086
Your
inner Broadcast receiver must be static ( to be registered through Manifest)
OR
Non-static broadcast receiver must be registered and unregistered inside the Parent class
for this.
I was using an Inner broadcast reciver, without registering it within the class. Either make it static and register in Manifest , or Make it non static and register and unregister inside the parent class .
Upvotes: 108
Reputation: 11
e~~I just meet that problem,and I refactor the class NetworkChangeReceiver
to an another place
Upvotes: -2