[英]WifiManager.NETWORK_STATE_CHANGED_ACTION not received
I want to know when a device is connected to a Wi-Fi network. 我想知道设备何时连接到Wi-Fi网络。 The problem is that I don't receive any Intent from WifiManager.NETWORK_STATE_CHANGED_ACTION
问题是我没有从WifiManager.NETWORK_STATE_CHANGED_ACTION收到任何意图
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
LocalBroadcastManager.getInstance(this).registerReceiver(MainActivity.wifiBroadcastReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
Log.i("LOG", "onReceive"); // This is never executed
}
}, intentFilter);
}
Permissions 权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
Does WifiManager.NETWORK_STATE_CHANGED_ACTION need some others permissions? WifiManager.NETWORK_STATE_CHANGED_ACTION是否需要其他权限?
Here LocalBroadcastManager
will not work. 在这里
LocalBroadcastManager
将无法正常工作。 LocalBroadcastManager
will only listen to the intent send via LocalBroadcastManager. LocalBroadcastManager
将仅侦听通过LocalBroadcastManager发送的意图。 But NETWORK_STATE_CHANGED_ACTION
will be broadcasted by system, so you need to register dynamic BroadcastReceiver to listen NETWORK_STATE_CHANGED_ACTION
. 但是
NETWORK_STATE_CHANGED_ACTION
将由系统广播,因此您需要注册动态的BroadcastReceiver来监听NETWORK_STATE_CHANGED_ACTION
。
For example.. 例如..
Define a BroadcastReceiver in your Activity as 在您的Activity中将BroadcastReceiver定义为
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
Log.i("Wi-Fi network state", info.getDetailedState().toString());
}
};
and register and un-register it as 并将其注册和注销为
@Override
protected void onCreate(Bundle savedInstanceState) {
......
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
registerReceiver(receiver, intentFilter);
}
@Override
protected void onDestroy() {
unregisterReceiver(receiver);
super.onDestroy();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.