2012-04-14 109 views
1

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

任何人都知道爲什麼發生這種情況還是什麼我可能做錯了?

感謝, 羅布

+1

我很驚訝,它的工作原理在模擬器上 - 它不應該。試圖通過非UI組件(例如'BroadcastReceiver')與用戶界面進行交互並不是如何做的事情。如果僅在此階段用於測試目的,則只需使用「Log」調用並將手機連接到開發機器以觀看logcat。或者(爲了測試目的)讓你的'BroadcastReceiver'生成一個狀態欄通知。 – Squonk 2012-04-14 15:59:05

+0

感謝您的回覆。我已經嘗試了System.out.println(「sometext」),並且再次輸出到模擬器中的logcat,但不是在設備上 – crazyfool 2012-04-14 16:29:49

+0

如果您通過切換Wi-Fi網絡來測試此功能,那麼您可能還需要android.permission .ACCESS_WIFI_STATE'權限。你也可以試聽'android.net.wifi.STATE_CHANGE'。 – Squonk 2012-04-14 16:38:42

回答

0

我無法找到任何東西在你的代碼顯然是不正確的,所以這裏是一個盡力而爲的。

在您的清單代替塊之後的

PVS

+0

感謝您的回覆隊友,嘗試過,仍然沒有運氣。我很確定接收器沒有被觸發,我只是不知道爲什麼。我也試過把廣播內容放在服務器上,這種服務再次在模擬器上工作,但不在設備上。 – crazyfool 2012-04-14 17:04:41

相關問題