Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从未收到请求者\u连接\u更改\u操作_Android_Android Wifi_Android Broadcastreceiver - Fatal编程技术网

Android 从未收到请求者\u连接\u更改\u操作

Android 从未收到请求者\u连接\u更改\u操作,android,android-wifi,android-broadcastreceiver,Android,Android Wifi,Android Broadcastreceiver,我希望在设备切换网络时收到通知,但由于一些奇怪的原因,尽管有文档和各种示例,但这个特定的操作从未发送到我的接收器 这是我的密码 接收人: BroadcastReceiver connectedToLocalWifiReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { final String

我希望在设备切换网络时收到通知,但由于一些奇怪的原因,尽管有文档和各种示例,但这个特定的操作从未发送到我的接收器

这是我的密码

接收人:

BroadcastReceiver connectedToLocalWifiReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            final String action = intent.getAction();
            Log.d(TAG, "ACTION='" + action +"'"); //<-- WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION never turns up here
            if (action.equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) {
                if (intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false)){
                    //this block of code is never called

                } else {
                    // ditto for this block
                }
            }
        }
    };
因此,在这一点上,wifi实际上与当前网络断开连接,并连接到我指定的网络,但它这样做时从未广播任何内容

我看不出有什么明显的错误,但一定是遗漏了一些基本的东西

我的清单权限是这样设置的,尽管我不知道如何设置的,因为它确实正确地进行了wifi切换,权限可能与它有任何关系:

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>


我很想知道我忽略了什么。

我遇到了一个类似的问题,并设法解决了它

我正在使用
网络状态更改操作
而不是
请求者连接更改操作

registerReceiver(new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        Log.v(LOG_TAG, "onReceive");
        if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
            Log.d(LOG_TAG, "network state was changed");
            NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
            if (networkInfo.getState() == NetworkInfo.State.CONNECTED) {
                Log.d(LOG_TAG, "network connection has been established");
                // the receiver is no longer needed, so unregist it immediately.
                unregisterReceiver(this);

                // do something...

            }
        }
    }
}, new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION));
注意:我没有设置任何其他权限

registerReceiver(new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        Log.v(LOG_TAG, "onReceive");
        if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
            Log.d(LOG_TAG, "network state was changed");
            NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
            if (networkInfo.getState() == NetworkInfo.State.CONNECTED) {
                Log.d(LOG_TAG, "network connection has been established");
                // the receiver is no longer needed, so unregist it immediately.
                unregisterReceiver(this);

                // do something...

            }
        }
    }
}, new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION));