簡體   English   中英

關於屏幕鎖定和解鎖

[英]Regarding screen lock and unlock

我正在做一個鎖定和解鎖屏幕的應用程序。 我正在使用disableKeygaurd和reeanbleKeygaurd進行鎖定和解鎖。 下面我用來解鎖的代碼:

if(mKeyguardLock ==  null){
  mKeyGuardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
  mKeyguardLock = mKeyGuardManager.newKeyguardLock("****");
  mKeyguardLock.disableKeyguard();  
}

和鎖:

if(mKeyguardLock != null){
 mKeyguardLock.reenableKeyguard();
 mKeyguardLock = null;
}

一切正常。 但是問題是當用戶通過拖動keygaurd意外解鎖屏幕時(不使用我的應用程序),那么我的應用程序將不會下次鎖定屏幕。.當用戶也通過拖動keygaurd解鎖時,我想使用我的應用程序。 我該怎么辦? 提前致謝

Try This:

private KeyguardManager mKeyguardManager;
private KeyguardManager.KeyguardLock mKeyguardLock;
private static final String TAG = "ALERTLock";

public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);

     int flags = getFlagsForVersion();        
        getWindow().addFlags(flags);
        mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);   
}

 private int getFlagsForVersion() {
        final String possibleFlags[] = new String[] {
            "FLAG_SHOW_WHEN_LOCKED",
            "FLAG_DISMISS_KEYGUARD",
            "FLAG_TURN_SCREEN_ON"
        };

        int flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
        for(String flag:possibleFlags) {
            try {
                Field field = WindowManager.LayoutParams.class.getField(flag);
                int value = field.getInt(null);
                flags |= value;
            }
            catch(NoSuchFieldException e) { }
            catch(IllegalAccessException e) { }
        }

        return flags;
    }

    private synchronized void enableKeyguard() {
        if (mKeyguardLock != null) {
            mKeyguardLock.reenableKeyguard();
            mKeyguardLock = null;
        }
    }

    private synchronized void disableKeyguard() {
        if (mKeyguardLock == null) {
            mKeyguardLock = mKeyguardManager.newKeyguardLock(TAG);
            mKeyguardLock.disableKeyguard();
        }
    }    
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        disableKeyguard();
    }

    @Override
    public void onResume() {
        super.onResume();
        disableKeyguard();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM