我正在尝试侦听网络连接的变化。当我进入或退出飞行模式时,我的广播接收器似乎没有发射。我不确定这是不是因为我没有正确注册,或者飞机模式的改变不会导致这种情况发生。任何建议表示赞赏。谢谢!
我的清单:
<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
答案 0 :(得分:2)
这看起来像是一个关于你所拥有的类似问题的线索。也许其中一个答案会有所帮助:
答案 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>
这肯定会解决您的问题!