web-dev-qa-db-ja.com

プログラムでAndroidデバイスをロックする

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

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

22
adithi

アクティビティクラスは内部クラスで、外部クラスは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);
      }
   }
}

デバイスをロックするには、ロックに使用するイベントでコードを記述します

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

DeviceAdminが有効になっている場合、電話はロックされます。デバイス管理を有効にするには、DevicePolicyManagerインテントが呼び出され、ユーザーが有効にする必要があります。

Intent intent = new   Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);  
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);        
15
adithi

このタスクを解決するには、 NoKeyGuardソースコード を調べ、より正確にはNoKeyGuard ServiceクラスとKeyguardLockWrapperクラスを調べます。

デバイスのロックを解除するには、ロック解除に使用するイベントでコードを記述します。

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

アクティビティクラスは内部クラスでなければならず、外部クラスは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);
  }
 }
}
1
Vikram Wadhwa