Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 如何访问清单中声明的广播接收器并更改某些属性_Android_Android Intent_Broadcastreceiver_Intentfilter - Fatal编程技术网

Android 如何访问清单中声明的广播接收器并更改某些属性

Android 如何访问清单中声明的广播接收器并更改某些属性,android,android-intent,broadcastreceiver,intentfilter,Android,Android Intent,Broadcastreceiver,Intentfilter,我在AndroidManifest.xml中声明了一个接收方: <receiver android:name=".receivers.ConnectionUpdateReceiver"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> </intent-filter> &

我在AndroidManifest.xml中声明了一个接收方:

    <receiver android:name=".receivers.ConnectionUpdateReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
    </receiver>



public class ConnectionUpdateReceiver extends BroadcastReceiver {
    private Listener listener;

    public void setListener(Listener listener) {
        this.listener = listener;
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        final NetworkInfo networkInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (networkInfo != null && networkInfo.isConnected()) {
            if (listener != null) {
                listener.onWifiConnected(networkInfo);
            }
        }
    }

    public interface Listener {
        void onWifiConnected(NetworkInfo networkInfo);
    }
}
但我不知道传递给IntenetFilter构造函数的是什么,因为

android.net.conn.CONNECTIVITY_CHANGE 

无法在此访问。

若要侦听网络更改事件,您的活动必须注册侦听连接更改的广播接收器:

例如:

public void onCreate(Bundle savedInstanceState) {

    registerReceiver(new BroadcastReceiver() {  

        public void onReceive(Context context, Intent intent) {

            Log.i(TAG, "Hey, net?");
        }}, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
}
我希望大家支持你的问题

我必须向这个类注册一个侦听器

这是不可能的,因为在Android发送和处理匹配的广播之前,没有清单注册的
BroadcastReceiver

我尝试在运行时以通常的方式在活动的onResume中注册此接收器:

registerReceiver(connectionUpdateReceiver, new IntentFilter(...));
只有当你去掉清单条目,这才有意义

但我不知道该传递给IntenetFilter构造函数什么,因为那里无法访问
android.net.conn.CONNECTIVITY\u CHANGE

欢迎您将“android.net.conn.CONNECTIVITY\u CHANGE”传递给
IntentFilter
构造函数。它也可以作为
ConnectivityManager.CONNECTIVITY\u ACTION
提供