У меня была та же проблема, и приемник не подходит
Android-разработчик
http://developer.android.com/reference/android/content/BroadcastReceiver.html
"Примечание. Если вы регистрируете получателя в своей деятельностиРеализация .onResume (), вы должны отменить ее регистрацию в Activity.onPause (). (Вы не получите намерения при приостановке, и это уменьшит ненужные системные издержки). Не отменяйте регистрацию в Activity.onSaveInstanceState (), потому чтоне будет вызываться, если пользователь вернется в стек истории. "
Вместо этого создайте диспетчер питания в методе onPause [я получил его по этой ссылке]
какузнать состояние экрана на устройстве Android?
public void onPause(){
PowerManager powermanager =(PowerManager)global.getSystemService(Context.POWER_SERVICE);
if (powermanager.isScreenOn()){
screen_off_beforePause = false;
//your code here
}else{
screen_off_beforePause = true;
}
}
public void onResume() {
if (screen_off_beforePause){
Log.e(TAG + ".onResume()", "screen was off before onPause");
}else{
Log.d(TAG + ".onResume()", "screen was not off before onPause");
//your code here
}
//resetting
screen_off_beforePause = false;
}