2011-10-10 79 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

对于这个问题,你必须创建一个无限的服务,为这些意图注册一个本地广播接收器。如果你这样做,那么你的应用程序将寻找屏幕关闭,但确保你必须提供服务,总是在后台运行,如重新启动接收器