0

Я пытаюсь получать уведомления, когда экран включен или выключен. Я зарегистрировал широкополосный приемник, как показано ниже.широкий литой прием не показывает уведомлений

, но когда я нажимаю кнопку в правом верхнем углу, приемник вызывается, но операторы журнала, показанные в коде, не отображаются.

пожалуйста, скажите мне, чтобы исправить это

код:

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

    switch (action) { 

    case Intent.ACTION_SCREEN_ON: 
     Log.w(TAG, SubTag.msg("onReceive", "Intent.ACTION_SCREEN_ON")); 
     break; 
    case Intent.ACTION_SCREEN_OFF: 
     Log.w(TAG, SubTag.msg("onReceive", "Intent.ACTION_SCREEN_OFF")); 
     break; 

    default: 
     Log.w(TAG, SubTag.msg("onReceive", "UNHANDLED CASE")); 
     break; 
    } 
} 

обновление:

я зарегистрированный в rceiver в OnStart следующим образом:

registerReceiver(this.mScreenReceiver, new IntentFilter(intent.ACTION_SCREEN_ON)) 

registerReceiver (this.mScreenReceiver, новый IntentFilter (intent.ACTION_SCREEN_OFF))

+0

Вы зарегистрировали приемник в манифесте? также 'Log' не появляется на экране, возможно, вы хотите использовать тост. – SaNtoRiaN

+0

@SaNtoRiaN означает ли это разрешение? нет, я не добавил никаких перерывов. нужно ли мне? сообщите мне, какой из них – user2121

+0

@ user2121, вы пробовали Log.d вместо Log.w (может быть, я просто не вижу Log.w в настройках)? Нужно ли пытаться поймать «onRecieve» с помощью отладочной точки останова? – Vyacheslav

ответ

1

Это не разрешение, вы должны зарегистрировать свою трансляцию в манифесте. Внутри application тегов в манифесте, писать этот код, но сначала изменить имя для широковещательного имени класса

<receiver android:name=".your_class_name_here" > 
    <intent-filter> 
     <action android:name="android.intent.action.SCREEN_OFF" /> 
     <action android:name="android.intent.action.SCREEN_ON" /> 
    </intent-filter> 
</receiver> 

Update Попробуйте эту трансляцию

private BroadcastReceiver ScreenActions = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i("BroadcastReceiver", "Broadcast is called"); 

     if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
      Log.i("BroadcastReceiver", "Screen ON"); 
     } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      Log.i("BroadcastReceiver", "Screen OFF"); 
     } 

    } 
}; 

и внутри вашего onStart() зарегистрировать его

registerReceiver(ScreenActions, new IntentFilter(Intent.ACTION_SCREEN_ON)); 
registerReceiver(ScreenActions, new IntentFilter(Intent.ACTION_SCREEN_OFF)); 
+0

нормально, но я использую bluetooth, и я не зарегистрировал его в манифесте, и он работает нормально !! Я зарегистрировал свои приемники в onStart() – user2121

+0

@ user2121 Да, вы можете сделать один из двух методов в манифесте или в onStart(), но важно зарегистрировать его – SaNtoRiaN

+0

, поэтому я зарегистрировал приемник экрана в onstart(), и это не working – user2121