2011-04-16 63 views
0

我試圖重啓手機已重新啓動後PhoneStateListener(如果我的isRunning SharedPref是真的......即監聽器重新啓動前運行)從麻煩開始PhoneStateListener的ON_BOOT_COMPLETED廣播接收機

這裏我的代碼...

Eclipse給我一個錯誤就行了:final TelephonyManager telephonyManager =(TelephonyManager)getSystemService(srvcName);

它說沒有定義getSystemService(String)。有人知道爲什麼相同的基本代碼在我的主要應用程序活動中工作得很好。

public class MyReceiver extends BroadcastReceiver { 
    SharedPreferences mPrefs; 

    String srvcName = Context.TELEPHONY_SERVICE; 
    final TelephonyManager telephonyManager = (TelephonyManager)getSystemService(srvcName); 

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


     mPrefs = context.getSharedPreferences("myAppPrefs", 0); 
     if(getRunning()){ 
      telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE); 
     } 

     } 
+0

logcat當時說什麼?此外,你可以嘗試移動onRecieve方法中的getSystemService調用 – advantej 2011-04-16 04:11:36

+0

沒有logcat,它不會編譯。另外,將getSystemService調用移動到onReceive中也沒有幫助...在Eclipse中出現相同的錯誤消息。 – 2011-04-16 04:23:46

回答

3

首先,它不能編譯,因爲BroadcastReceiver不是Context

其次,清單註冊的BroadcastReceiver無法註冊偵聽器。 BroadcastReceiver對象以及可能的整個過程在onReceive()完成後將消失毫秒。

請收聽ACTION_PHONE_STATE_CHANGED廣播,其中給出與PhoneStateListener相同的信息。作爲額外的好處,您不需要在啓動時獲得控制權,這可以節省您的權限並加快用戶手機的重新啓動。