我写了一个简单的应用程序,当网络状态发生变化时,atm只是弹出一条Toast消息。这在模拟器上完美的工作,但我已经在2个不同的Android手机上尝试过它,似乎广播接收器从来没有触发这些事件。 这是我的广播reciever:Android - 广播接收器在模拟器上工作不在电话上
public class PhoneStateReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Toast.makeText(context, "Hi", Toast.LENGTH_SHORT).show();
}
}
这是我的manifest文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
..
<uses-sdk android:minSdkVersion="8" />
<application
..
<receiver android:name=".PhoneStateReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"></action>
</intent-filter>
</receiver>
..
</application>
<!-- Needed to check when the network connection changes -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
</manifest>
任何人都知道为什么发生这种情况还是什么我可能做错了?
感谢, 罗布
我很惊讶,它的工作原理在模拟器上 - 它不应该。试图通过非UI组件(例如'BroadcastReceiver')与用户界面进行交互并不是如何做的事情。如果仅在此阶段用于测试目的,则只需使用“Log”调用并将手机连接到开发机器以观看logcat。或者(为了测试目的)让你的'BroadcastReceiver'生成一个状态栏通知。 – Squonk 2012-04-14 15:59:05
感谢您的回复。我已经尝试了System.out.println(“sometext”),并且再次输出到模拟器中的logcat,但不是在设备上 – crazyfool 2012-04-14 16:29:49
如果您通过切换Wi-Fi网络来测试此功能,那么您可能还需要android.permission .ACCESS_WIFI_STATE'权限。你也可以试听'android.net.wifi.STATE_CHANGE'。 – Squonk 2012-04-14 16:38:42