2016-02-26 82 views
1

前幾天我發現了這段代碼,但它不起作用。有人可以解釋我爲什麼嗎?我想檢測用戶是否鎖定了設備。它必須打印第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://stackoverflow.com/questions/8317331/detecting-when-screen-is-locked) – Strider

+0

@strider這不是一個重複,因爲我的可能的複製問爲什麼這個代碼不起作用,而不是如何做到這一點。 –

+0

beacuase你的代碼在創建服務時只運行一個 –

回答

-3

有這個很多答案。但結帳這一個;

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

您能否介紹一下我的代碼和我的代碼有什麼區別?謝謝。 –