2011-10-10 45 views
2

我試圖在屏幕鎖定時關閉GPS位置更新。讀過這個問題的答案Android - how to receive broadcast intents ACTION_SCREEN_ON/OFF?BroadcastReceiver未觸發屏幕鎖定

我已經寫了一些代碼來實現BroadcastReceiver,但在屏幕熄滅時它不工作。

我註冊一個BroadcastReceiver在我的代碼以

@Override 
public void onResume() { 
    super.onResume(); 
    IntentFilter iFilter = new IntentFilter(); 
    iFilter.addAction("android.intent.action.ACTION_SCREEN_ON"); 
    iFilter.addAction("android.intent.action.ACTION_SCREEN_OFF"); 
    registerReceiver(screenStatReceiver, iFilter); 

和接收器本身只是現在存根:

public BroadcastReceiver screenStatReceiver = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     Log.d("BCAST_TAG", "Got broadcast");   
     String action = intent.getAction(); 

     } 
}; 

,並在清單中,我有:

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

任何想法爲什麼它沒有被觸發時,我在我的手機上調試?

+0

您正在OnResume方法中註冊接收器。爲什麼不在onCreate()中註冊它,這樣你就可以持久地「收聽」了? –

+0

即時註冊onCreate但我不註銷它 – Erum

+0

其投擲錯誤我想檢測屏幕上的變化我將如何 – Erum

回答

8
+0

非常感謝,我改變了我的代碼從「android.intent.action.ACTION_SCREEN_ON」Intent.ACTION_SCREEN_ON如在鏈接,它現在工作 – NickT

+0

=)沒有問題。很高興有幫助。 –

0

您註冊在onResume()方法reciever。爲什麼不在onCreate()中註冊它,這樣你就可以持續「傾聽​​」了?

在這種情況下,您只在活動恢復後才能聽取更改。

1

對於這個問題,你必須創建一個無限的服務,爲這些意圖註冊一個本地廣播接收器。如果你這樣做,那麼你的應用程序將尋找屏幕關閉,但確保你必須提供服務,總是在後臺運行,如重新啓動接收器