<receiver android:name="ScreenReceiver">
            <intent-filter>
                <action android:name="android.intent.action.SCREEN_ON"/>
            </intent-filter>
</receiver>
public class ScreenReceiver extends BroadcastReceiver{ @Override
public void onReceive(Context context, Intent intent) {
Log.i("wangxiao", "111111111111");
//Log.i(intent.getAction(), "222222222");
}}
这样能监控到解锁的事件么?

解决方案 »

  1.   

    已经好了。不可以到Manifest里面注册,要在代码里面用RegisterReceive()注册才有效,对于SCRESCREEN_ON/SCREEN_OFF。
      

  2.   

    当ScreenReceiver是单独写的一个广播接收类而不是一个内部类时是可以在Manifest里注册的
      

  3.   

    public void onCreate(final Bundle savedInstanceState) {  
           final IntentFilter filter = new IntentFilter();  
           filter.addAction(Intent.ACTION_SCREEN_OFF);  
           filter.addAction(Intent.ACTION_SCREEN_ON);  
           registerReceiver(mBatInfoReceiver, filter);  
      
      
      
       private final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {  
           @Override  
           public void onReceive(final Context context, final Intent intent) {  
               final String action = intent.getAction();  
              if(Intent.ACTION_SCREEN_ON.equals(action)){  
                   Log.d(TAG, "screen is on...");  
              }else if(Intent.ACTION.equals(action)){  
                   Log.d(TAG, "screen is off...");  
      
              }  
           }  
       };  
      

  4.   

    楼上的真的都试过了吗,为何我无论是写一个单独的接收器类然后在manifest里注册,还是写一个匿名的接收器在代码里注册,全部都没有接收到呢。而且,貌似SCREEN_ON只是屏幕点亮的时候系统发的消息,并不是屏幕解锁.
    楼主既然解决了,何不分享下呢。
      

  5.   

    解决了,其实不是监听ACTION_SCREEN_ON,而是ACTION_USER_PRESENT