2010年10月22日 星期五

[Android] 如何使用KeyguardManager自動解鎖



每次將寫好的程式碼編譯並執行的時候便要重新幫模擬器解鎖 , 重複幾次之後就會覺
相當得煩 , 而且當模擬器進入主畫面時程式已經在背景開始執行了 , 有時候沒有馬
上解鎖便會錯失一些資訊 , 所以乾脆在模擬器進入主畫面之後就直接自動解鎖吧!


首先對於按鍵鎖的部分是交給 android.app.KeyguardManager 這個類別來處理的
而關於Android Reference是這樣敘述的:


"Class that can be used to lock and unlock the keyboard. Get an instance of this class by callinggetSystemService(java.lang.String) with argument 
KEYGUARD_SERVICE.The Actual class to control the keyboard locking is 
KeyguardManager.KeyguardLock."


而這段敘述告訴我們 , 其實真的在控制按鍵鎖的Class是 
KeyguardManager.KeyguardLock 而下面這段Code可以解決我們的問題



package com.android;

import android.app.Activity;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.os.Bundle;

public class HelloTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        KeyguardManager keyguardManager =      (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);  
        KeyguardLock Keylock = keyguardManager.newKeyguardLock(Activity.KEYGUARD_SERVICE);  
        Keylock.disableKeyguard(); // 自動解鎖
        /*
           Keylock.reenableKeyguard();
           在我們使用disableKeyguard()之後
           keyguard 將會被隱藏起來
           而reenableKeyguard()即是使他重新出現                  
        */
    }
} 

另外別忘了在 AndroidManifest.xml 裡加上<uses-permission>屬性 , code如下



而在 Manifest.permission Reference中 , 有許多其他詳細的<uses-permission>敘述
而對於DISABLE_KEYGUARD 是這樣解釋的: "Allows applications to disable the keyguard


到這邊為止 , 我們已經成功的使模擬器在執行程式碼的時候可以自動的解鎖了
所以當模擬器剛出現的時候仍然會有鍵盤鎖的圖示 , 這個時候稍等一下就會自動解鎖
進入您的程式畫面了~



沒有留言:

張貼留言

Google Analytics