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; 
    } 
} 

更新

我registerd的rceiver处理通信如下:

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

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

+0

您是否在清单中注册接收器? 'Log'也不会出现在屏幕上,也许你想用烤面包。 – SaNtoRiaN

+0

@SaNtoRiaN你是否有权限?不,我没有添加任何permssions。我是不是该?请让我知道哪一个 – 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> 

更新 试试这个广播

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

好吧,但我是alos使用蓝牙,我还没有注册它的清单,它工作正常!我注册我的接收器onStart() – user2121

+0

@ user2121是的,你可以做两种方法之一,在清单或onStart(),但重要的是注册它 – SaNtoRiaN

+0

所以我注册的屏幕接收器onstart(),它不是正在工作 – user2121