检测设备是否锁定

问题描述:

前几天我发现了这段代码,但它不起作用。有人可以解释我为什么吗?我想检测用户是否锁定了设备。它必须打印第2点,第1点和第2点(如果手机已解锁,然后再次锁定和解锁),但它仅打印第2点,这就是全部。而已。 我的活动:检测设备是否锁定

public class MainActivity extends Activity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button button = (Button) findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startService(new Intent(MainActivity.this, MyService.class)); 
      } 
     }); 
    } 
} 

为MyService:

public class MyService extends Service { 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     KeyguardManager kgMgr = 
       (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); 
     boolean showing = kgMgr.inKeyguardRestrictedInputMode(); 
     if (showing){ 
      Log.i("Point ", "1"); 
     }else{ 
       Log.i("Point ", "2"); 
      } 
     } 
    } 
} 
+0

[检测时屏幕被锁定(http://*.com/questions/8317331/detecting-when-screen-is-locked) – Strider

+0

@strider这不是一个重复,因为我的可能的复制问为什么这个代码不起作用,而不是如何做到这一点。 –

+0

beacuase你的代码在创建服务时只运行一个 –

有这个很多答案。但结帐这一个;

KeyguardManager kM = 
    (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); 
boolean isLocked= kM.inKeyguardRestrictedInputMode(); 
+1

您能否介绍一下我的代码和我的代码有什么区别?谢谢。 –