2010-12-28 11 views
22

私はプログラムでデバイスをロックしようとしています。しかし、私はまだ解決策を見つけることができません。 プログラムでアンドロイドフロイ2.2をロックしたいです。私はkeyguardmanagerとDeviceAdminManagerを試しました。アンドロイドデバイスをプログラムでロックする

私のアプリはデバイスをリモートでロックすることです。メッセージをいくつかのコードワードで受信してロックすると、電話がロックされます。私は解決策として多くのApi_demoプログラムを見つけましたが、私はそれだけでロックコードを抽出して解決策を見つけることはできません。

+0

私はそれをどうやって得たのですか... – adithi

+4

あなた自身が答えを提供し、それを受け入れます。 – pufferfish

答えて

15

アクティビティクラスは内部クラスであるべきとoutterクラスはDeviceAdminがある場合、デバイスは、あなたが

if (active) { 
mDPM.lockNow(); 
} 

をロックするために使用するイベントでコードを書くロックするにはDeviceAdminReceiver

public class adminActivity extends DeviceAdminReceiver { 

    public static class Controller extends Activity { 

        DevicePolicyManager mDPM; 
      ComponentName mDeviceAdminSample; 

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

       mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); 
       mDeviceAdminSample = new ComponentName(Controller.this, 
         adminActivity.class); 
     } 
    } 
} 

を拡張する必要があります有効にすると、電話機はロックされます。 デバイス管理者を有効にするには、DevicePolicyManagerインテントが呼び出され、ユーザーが有効にする必要があります。あなたはNoKeyGuard source codeに見てみると、より正確NoKeyGuardサービスクラスとKeyguardLockWrapperクラスにすることができ、このタスクを解決するために

Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);   
+3

adithi wahtはsecuremeAdminでアクティブですか?同じ問題があります。あなたは何がアクティブで、何がsecureadminここに言ってください誰でもできる – arpit

+3

を説明することができますか? – Reyjohn

+0

上記のコードはAndroid SDKで利用可能なAndroid SDKサンプルにあるDeviceAdminSampleから取得したものです。 APIDemos - > app – Sundeep

3

。デバイスのロックを解除する

あなたがロックを解除するために使用する場合にコードを書く:

Context context= getApplicationContext(); 
    KeyguardManager _guard = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
    KeyguardLock _keyguardLock = _guard.newKeyguardLock("KeyguardLockWrapper"); 
    //to disable 
    _keyguardLock.disableKeyguard(); 
    //to enable 
    _keyguardLock.reenableKeyguard(); 
+8

これは現在廃止されました。使ってはいけません! – Hawk

1

アクティビティクラスは内部クラスであるべきであり、外側のクラスがDeviceAdminReceiver

public class adminActivity extends DeviceAdminReceiver { 

    public static class Controller extends Activity { 

       DevicePolicyManager mDPM; 
     ComponentName mDeviceAdminSample; 

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

      mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); 
      mDeviceAdminSample = new ComponentName(Controller.this, 
        adminActivity.class); 
    } 
} 
} 
-3
 WindowManager.LayoutParams lp = getWindow().getAttributes(); 
     lp.screenBrightness = 0; 
     getWindow().setAttributes(lp); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
を拡張する必要があります
+0

これは、Android 2.3ではうまくいきましたが、それ以上は動作しません。 – DagW

関連する問題