I am receiving “android.net.wifi.WIFI_STATE_CHANGED” as soon as Registering BroadcastReceiver
I register a broadcast on runtime to receive "android.net.wifi.WIFI_STATE_CHANGED"
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.wifi.WIFI_STATE_CHANGED");
broadcastReceiverAction = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.net.wifi.WIFI_STATE_CHANGED")) {
/*I get this action as soon as calling registerReceiver(broadcastReceiverAction, intentFilter);*/
}
}
}
registerReceiver(broadcastReceiverAction, intentFilter);
Issue: This gets the broadcast action as soon as registering the receiver.
I got this on Android API 26 & Higher Which I can not declare "android.net.wifi.WIFI_STATE_CHANGED" in Manifest. (No Longer Supported by Android System)
android broadcastreceiver
add a comment |
I register a broadcast on runtime to receive "android.net.wifi.WIFI_STATE_CHANGED"
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.wifi.WIFI_STATE_CHANGED");
broadcastReceiverAction = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.net.wifi.WIFI_STATE_CHANGED")) {
/*I get this action as soon as calling registerReceiver(broadcastReceiverAction, intentFilter);*/
}
}
}
registerReceiver(broadcastReceiverAction, intentFilter);
Issue: This gets the broadcast action as soon as registering the receiver.
I got this on Android API 26 & Higher Which I can not declare "android.net.wifi.WIFI_STATE_CHANGED" in Manifest. (No Longer Supported by Android System)
android broadcastreceiver
Possible duplicate of BroadcastReceiver onReceive triggered when registered
– quaternion
Nov 15 '18 at 2:59
I got this on Android API 26 & Higher Which I can not declare "android.net.wifi.WIFI_STATE_CHANGED" in Manifest. (No Longer Supported by Android System)
– Elias Fazel
Nov 15 '18 at 3:05
add a comment |
I register a broadcast on runtime to receive "android.net.wifi.WIFI_STATE_CHANGED"
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.wifi.WIFI_STATE_CHANGED");
broadcastReceiverAction = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.net.wifi.WIFI_STATE_CHANGED")) {
/*I get this action as soon as calling registerReceiver(broadcastReceiverAction, intentFilter);*/
}
}
}
registerReceiver(broadcastReceiverAction, intentFilter);
Issue: This gets the broadcast action as soon as registering the receiver.
I got this on Android API 26 & Higher Which I can not declare "android.net.wifi.WIFI_STATE_CHANGED" in Manifest. (No Longer Supported by Android System)
android broadcastreceiver
I register a broadcast on runtime to receive "android.net.wifi.WIFI_STATE_CHANGED"
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.wifi.WIFI_STATE_CHANGED");
broadcastReceiverAction = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.net.wifi.WIFI_STATE_CHANGED")) {
/*I get this action as soon as calling registerReceiver(broadcastReceiverAction, intentFilter);*/
}
}
}
registerReceiver(broadcastReceiverAction, intentFilter);
Issue: This gets the broadcast action as soon as registering the receiver.
I got this on Android API 26 & Higher Which I can not declare "android.net.wifi.WIFI_STATE_CHANGED" in Manifest. (No Longer Supported by Android System)
android broadcastreceiver
android broadcastreceiver
edited Nov 15 '18 at 3:05
Elias Fazel
asked Nov 15 '18 at 2:40
Elias FazelElias Fazel
1,07879
1,07879
Possible duplicate of BroadcastReceiver onReceive triggered when registered
– quaternion
Nov 15 '18 at 2:59
I got this on Android API 26 & Higher Which I can not declare "android.net.wifi.WIFI_STATE_CHANGED" in Manifest. (No Longer Supported by Android System)
– Elias Fazel
Nov 15 '18 at 3:05
add a comment |
Possible duplicate of BroadcastReceiver onReceive triggered when registered
– quaternion
Nov 15 '18 at 2:59
I got this on Android API 26 & Higher Which I can not declare "android.net.wifi.WIFI_STATE_CHANGED" in Manifest. (No Longer Supported by Android System)
– Elias Fazel
Nov 15 '18 at 3:05
Possible duplicate of BroadcastReceiver onReceive triggered when registered
– quaternion
Nov 15 '18 at 2:59
Possible duplicate of BroadcastReceiver onReceive triggered when registered
– quaternion
Nov 15 '18 at 2:59
I got this on Android API 26 & Higher Which I can not declare "android.net.wifi.WIFI_STATE_CHANGED" in Manifest. (No Longer Supported by Android System)
– Elias Fazel
Nov 15 '18 at 3:05
I got this on Android API 26 & Higher Which I can not declare "android.net.wifi.WIFI_STATE_CHANGED" in Manifest. (No Longer Supported by Android System)
– Elias Fazel
Nov 15 '18 at 3:05
add a comment |
2 Answers
2
active
oldest
votes
To check network connectivity state change you can do it programmatically. It supports API 21+.
public class ConnectionStateMonitor extends ConnectivityManager.NetworkCallback {
public final String TAG = ConnectionStateMonitor.class.getSimpleName();
private boolean isLost = false;
final NetworkRequest networkRequest;
Context context;
private ConnectionStateMonitor instance;
private boolean isLost = false;
private ConnectionStateMonitor() {
networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();
}
public synchronized ConnectionStateMonitor getInstance() {
if (instance == null) {
instance = new ConnectionStateMonitor();
}
return instance;
}
public void enable(Context context) {
try {
if (context == null) return;
this.context = context;
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.registerNetworkCallback(networkRequest, this);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onAvailable(Network network) {
Log.i(TAG, "onAvailable called " +
network.toString());
if (isLost) {
isLost = false;}
// when network available called it
}
@Override
public void onLost(Network network) {
super.onLost(network);
isLost = true;
// when network lost called it
Log.i(TAG, "onLost called ");
}
}
When the network is available it triggers the onAvailable() as soon as calling registerNetworkCallback() so my main problem still remains. I got another solution that I will post asap.
– Elias Fazel
Nov 15 '18 at 3:49
1
please check my latest updated code. It will prevent for the first time call and work well for all uses. Thanks
– Sultan Mahmud
Nov 15 '18 at 4:43
As I posted yesterday the solution of simple variable to add extra restriction on getting the intent action.
– Elias Fazel
Nov 15 '18 at 21:56
add a comment |
[Simple Solution]
Problem is Sticky Broadcasts which trigger at the moment of registration.
To avoid this I simply add another parameter to restrict the process.
I defined a static variable
public static boolean triggerBroadcast = false;
Then I change it to after registering the broadcast by few second delay.
registerReceiver(broadcastReceiverAction, intentFilter);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
triggerWifiBroadcast = true;
}
}, 3000);
Then onReceive() I compare intent.getAction with this
if (intent.getAction().equals("android.net.wifi.WIFI_STATE_CHANGED") && triggerBroadcast ) {
//
}
Then you can change it to false whenever decide to unregister the broadcast receiver.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53311657%2fi-am-receiving-android-net-wifi-wifi-state-changed-as-soon-as-registering-broa%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
To check network connectivity state change you can do it programmatically. It supports API 21+.
public class ConnectionStateMonitor extends ConnectivityManager.NetworkCallback {
public final String TAG = ConnectionStateMonitor.class.getSimpleName();
private boolean isLost = false;
final NetworkRequest networkRequest;
Context context;
private ConnectionStateMonitor instance;
private boolean isLost = false;
private ConnectionStateMonitor() {
networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();
}
public synchronized ConnectionStateMonitor getInstance() {
if (instance == null) {
instance = new ConnectionStateMonitor();
}
return instance;
}
public void enable(Context context) {
try {
if (context == null) return;
this.context = context;
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.registerNetworkCallback(networkRequest, this);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onAvailable(Network network) {
Log.i(TAG, "onAvailable called " +
network.toString());
if (isLost) {
isLost = false;}
// when network available called it
}
@Override
public void onLost(Network network) {
super.onLost(network);
isLost = true;
// when network lost called it
Log.i(TAG, "onLost called ");
}
}
When the network is available it triggers the onAvailable() as soon as calling registerNetworkCallback() so my main problem still remains. I got another solution that I will post asap.
– Elias Fazel
Nov 15 '18 at 3:49
1
please check my latest updated code. It will prevent for the first time call and work well for all uses. Thanks
– Sultan Mahmud
Nov 15 '18 at 4:43
As I posted yesterday the solution of simple variable to add extra restriction on getting the intent action.
– Elias Fazel
Nov 15 '18 at 21:56
add a comment |
To check network connectivity state change you can do it programmatically. It supports API 21+.
public class ConnectionStateMonitor extends ConnectivityManager.NetworkCallback {
public final String TAG = ConnectionStateMonitor.class.getSimpleName();
private boolean isLost = false;
final NetworkRequest networkRequest;
Context context;
private ConnectionStateMonitor instance;
private boolean isLost = false;
private ConnectionStateMonitor() {
networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();
}
public synchronized ConnectionStateMonitor getInstance() {
if (instance == null) {
instance = new ConnectionStateMonitor();
}
return instance;
}
public void enable(Context context) {
try {
if (context == null) return;
this.context = context;
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.registerNetworkCallback(networkRequest, this);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onAvailable(Network network) {
Log.i(TAG, "onAvailable called " +
network.toString());
if (isLost) {
isLost = false;}
// when network available called it
}
@Override
public void onLost(Network network) {
super.onLost(network);
isLost = true;
// when network lost called it
Log.i(TAG, "onLost called ");
}
}
When the network is available it triggers the onAvailable() as soon as calling registerNetworkCallback() so my main problem still remains. I got another solution that I will post asap.
– Elias Fazel
Nov 15 '18 at 3:49
1
please check my latest updated code. It will prevent for the first time call and work well for all uses. Thanks
– Sultan Mahmud
Nov 15 '18 at 4:43
As I posted yesterday the solution of simple variable to add extra restriction on getting the intent action.
– Elias Fazel
Nov 15 '18 at 21:56
add a comment |
To check network connectivity state change you can do it programmatically. It supports API 21+.
public class ConnectionStateMonitor extends ConnectivityManager.NetworkCallback {
public final String TAG = ConnectionStateMonitor.class.getSimpleName();
private boolean isLost = false;
final NetworkRequest networkRequest;
Context context;
private ConnectionStateMonitor instance;
private boolean isLost = false;
private ConnectionStateMonitor() {
networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();
}
public synchronized ConnectionStateMonitor getInstance() {
if (instance == null) {
instance = new ConnectionStateMonitor();
}
return instance;
}
public void enable(Context context) {
try {
if (context == null) return;
this.context = context;
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.registerNetworkCallback(networkRequest, this);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onAvailable(Network network) {
Log.i(TAG, "onAvailable called " +
network.toString());
if (isLost) {
isLost = false;}
// when network available called it
}
@Override
public void onLost(Network network) {
super.onLost(network);
isLost = true;
// when network lost called it
Log.i(TAG, "onLost called ");
}
}
To check network connectivity state change you can do it programmatically. It supports API 21+.
public class ConnectionStateMonitor extends ConnectivityManager.NetworkCallback {
public final String TAG = ConnectionStateMonitor.class.getSimpleName();
private boolean isLost = false;
final NetworkRequest networkRequest;
Context context;
private ConnectionStateMonitor instance;
private boolean isLost = false;
private ConnectionStateMonitor() {
networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();
}
public synchronized ConnectionStateMonitor getInstance() {
if (instance == null) {
instance = new ConnectionStateMonitor();
}
return instance;
}
public void enable(Context context) {
try {
if (context == null) return;
this.context = context;
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.registerNetworkCallback(networkRequest, this);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onAvailable(Network network) {
Log.i(TAG, "onAvailable called " +
network.toString());
if (isLost) {
isLost = false;}
// when network available called it
}
@Override
public void onLost(Network network) {
super.onLost(network);
isLost = true;
// when network lost called it
Log.i(TAG, "onLost called ");
}
}
edited Nov 15 '18 at 4:42
answered Nov 15 '18 at 3:32
Sultan MahmudSultan Mahmud
23017
23017
When the network is available it triggers the onAvailable() as soon as calling registerNetworkCallback() so my main problem still remains. I got another solution that I will post asap.
– Elias Fazel
Nov 15 '18 at 3:49
1
please check my latest updated code. It will prevent for the first time call and work well for all uses. Thanks
– Sultan Mahmud
Nov 15 '18 at 4:43
As I posted yesterday the solution of simple variable to add extra restriction on getting the intent action.
– Elias Fazel
Nov 15 '18 at 21:56
add a comment |
When the network is available it triggers the onAvailable() as soon as calling registerNetworkCallback() so my main problem still remains. I got another solution that I will post asap.
– Elias Fazel
Nov 15 '18 at 3:49
1
please check my latest updated code. It will prevent for the first time call and work well for all uses. Thanks
– Sultan Mahmud
Nov 15 '18 at 4:43
As I posted yesterday the solution of simple variable to add extra restriction on getting the intent action.
– Elias Fazel
Nov 15 '18 at 21:56
When the network is available it triggers the onAvailable() as soon as calling registerNetworkCallback() so my main problem still remains. I got another solution that I will post asap.
– Elias Fazel
Nov 15 '18 at 3:49
When the network is available it triggers the onAvailable() as soon as calling registerNetworkCallback() so my main problem still remains. I got another solution that I will post asap.
– Elias Fazel
Nov 15 '18 at 3:49
1
1
please check my latest updated code. It will prevent for the first time call and work well for all uses. Thanks
– Sultan Mahmud
Nov 15 '18 at 4:43
please check my latest updated code. It will prevent for the first time call and work well for all uses. Thanks
– Sultan Mahmud
Nov 15 '18 at 4:43
As I posted yesterday the solution of simple variable to add extra restriction on getting the intent action.
– Elias Fazel
Nov 15 '18 at 21:56
As I posted yesterday the solution of simple variable to add extra restriction on getting the intent action.
– Elias Fazel
Nov 15 '18 at 21:56
add a comment |
[Simple Solution]
Problem is Sticky Broadcasts which trigger at the moment of registration.
To avoid this I simply add another parameter to restrict the process.
I defined a static variable
public static boolean triggerBroadcast = false;
Then I change it to after registering the broadcast by few second delay.
registerReceiver(broadcastReceiverAction, intentFilter);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
triggerWifiBroadcast = true;
}
}, 3000);
Then onReceive() I compare intent.getAction with this
if (intent.getAction().equals("android.net.wifi.WIFI_STATE_CHANGED") && triggerBroadcast ) {
//
}
Then you can change it to false whenever decide to unregister the broadcast receiver.
add a comment |
[Simple Solution]
Problem is Sticky Broadcasts which trigger at the moment of registration.
To avoid this I simply add another parameter to restrict the process.
I defined a static variable
public static boolean triggerBroadcast = false;
Then I change it to after registering the broadcast by few second delay.
registerReceiver(broadcastReceiverAction, intentFilter);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
triggerWifiBroadcast = true;
}
}, 3000);
Then onReceive() I compare intent.getAction with this
if (intent.getAction().equals("android.net.wifi.WIFI_STATE_CHANGED") && triggerBroadcast ) {
//
}
Then you can change it to false whenever decide to unregister the broadcast receiver.
add a comment |
[Simple Solution]
Problem is Sticky Broadcasts which trigger at the moment of registration.
To avoid this I simply add another parameter to restrict the process.
I defined a static variable
public static boolean triggerBroadcast = false;
Then I change it to after registering the broadcast by few second delay.
registerReceiver(broadcastReceiverAction, intentFilter);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
triggerWifiBroadcast = true;
}
}, 3000);
Then onReceive() I compare intent.getAction with this
if (intent.getAction().equals("android.net.wifi.WIFI_STATE_CHANGED") && triggerBroadcast ) {
//
}
Then you can change it to false whenever decide to unregister the broadcast receiver.
[Simple Solution]
Problem is Sticky Broadcasts which trigger at the moment of registration.
To avoid this I simply add another parameter to restrict the process.
I defined a static variable
public static boolean triggerBroadcast = false;
Then I change it to after registering the broadcast by few second delay.
registerReceiver(broadcastReceiverAction, intentFilter);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
triggerWifiBroadcast = true;
}
}, 3000);
Then onReceive() I compare intent.getAction with this
if (intent.getAction().equals("android.net.wifi.WIFI_STATE_CHANGED") && triggerBroadcast ) {
//
}
Then you can change it to false whenever decide to unregister the broadcast receiver.
edited Nov 15 '18 at 21:54
answered Nov 15 '18 at 4:00
Elias FazelElias Fazel
1,07879
1,07879
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53311657%2fi-am-receiving-android-net-wifi-wifi-state-changed-as-soon-as-registering-broa%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Possible duplicate of BroadcastReceiver onReceive triggered when registered
– quaternion
Nov 15 '18 at 2:59
I got this on Android API 26 & Higher Which I can not declare "android.net.wifi.WIFI_STATE_CHANGED" in Manifest. (No Longer Supported by Android System)
– Elias Fazel
Nov 15 '18 at 3:05