Блокировка устройства Android программно

Я пытался заблокировать устройство с помощью программы. Но я все еще не могу найти решение. Я хочу заблокировать Android froyo2.2 через программу. Я пробовал keyguardmanager и DeviceAdminManager.

Мое приложение для удаленной блокировки устройства. При получении сообщения с некоторыми кодовыми словами для блокировки он блокирует телефон. Я нашел много программ Api_demo в качестве решения, но я не могу извлечь из этого код блокировки один и найти решение.

Ответ 1

Класс активности должен быть внутренним классом, а класс outter должен расширять 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);        

Ответ 2

Чтобы решить эту задачу, вы можете взглянуть на исходный код NoKeyGuard и точнее на класс службы NoKeyGuard и класс 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

Класс активности должен быть внутренним классом, а внешний класс должен расширять 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);
  }
 }
}

Ответ 4

        WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.screenBrightness = 0;
        getWindow().setAttributes(lp);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);