Блокировка устройства 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);