BroadcastReceiver未针对网络连接更改而触发

时间:2013-09-07 03:03:41

标签: android connection broadcastreceiver

我正在尝试侦听网络连接的变化。当我进入或退出飞行模式时,我的广播接收器似乎没有发射。我不确定这是不是因为我没有正确注册,或者飞机模式的改变不会导致这种情况发生。任何建议表示赞赏。谢谢!

我的清单:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

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

我的广播接收器类:

public class NetworkReceiver extends BroadcastReceiver {

    private SharedPreferences prefs;
    private SharedPreferences.Editor prefEditor;

    @Override
    public void onReceive(Context context, Intent intent) {

        prefs = PreferenceManager.getDefaultSharedPreferences(context);
        prefEditor = prefs.edit();

        Boolean has_connection = prefs.getBoolean("has_connection", false);
        prefEditor.putBoolean("has_connection", !has_connection);
        prefEditor.commit();

        System.err.println("Network Receiver notified of a connectivity change!");
        System.err.println("New has_connection: " + !has_connection);

    }

}

此外,应用程序运行约45秒后,它突然崩溃并出现以下错误:

09-06 21:29:48.775: E/AndroidRuntime(15613): java.lang.RuntimeException: Unable to instantiate receiver com.mysite.myapp.NetworkReceiver: java.lang.ClassNotFoundException: com.mysite.myapp.NetworkReceiver

3 个答案:

答案 0 :(得分:2)

这看起来像是一个关于你所拥有的类似问题的线索。也许其中一个答案会有所帮助:

Unable to instantiate receiver in BroadcastReceiver SMS

答案 1 :(得分:0)

让你在AndroidManifest.xml中添加权限,

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>

答案 2 :(得分:0)

不要为接收者提供相关姓名。提供完整的包名称。例如,

<receiver android:name="com.YouPackageName.NetworkReceiver" >
<intent-filter>
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>

这肯定会解决您的问题!