简体   繁体   English

未收到WifiManager.NETWORK_STATE_CHANGED_ACTION

[英]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.

相关问题 LocalBroadcastManager是否可以检测WifiManager.NETWORK_STATE_CHANGED_ACTION更改? - Can LocalBroadcastManager detect WifiManager.NETWORK_STATE_CHANGED_ACTION changes? 每次触发WifiManager.NETWORK_STATE_CHANGED_ACTION - WifiManager.NETWORK_STATE_CHANGED_ACTION triggers every time android连接到wifi WifiManager.SUPPLICANT_STATE_CHANGED_ACTION奇怪的问题 - android connecting to wifi WifiManager.SUPPLICANT_STATE_CHANGED_ACTION strange issue Google Cloud Messaging - 有时直到网络状态改变才会收到消息 - Google Cloud Messaging - messages sometimes not received until network state changed 更改网络时将NETWORK_STATE_CHANGED_ACTION接收为已连接 - Receiving NETWORK_STATE_CHANGED_ACTION as connected while changing network 连接到 WiFi 接入点时未收到 WIFI_STATE_CHANGED_ACTION 意图? - WIFI_STATE_CHANGED_ACTION intent not received upon connection to WiFi access point? Android 8 Oreo中WifiManager的startscan方法中未收到响应 - No response received in startscan method at WifiManager in Android 8 Oreo registerReceiver BluetoothAdapter.ACTION_STATE_CHANGED不起作用 - registerReceiver BluetoothAdapter.ACTION_STATE_CHANGED not working Intent.ACTION_PACKAGE_CHANGED-未接收到禁用广播的应用程序组件 - Intent.ACTION_PACKAGE_CHANGED - Broadcast for App component disabled not received 使用WifiManager无法获得任何wifi网络 - Does not get any wifi network with using WifiManager
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM