我寫了一個簡單的應用程序,當網絡狀態發生變化時,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