プログラムでデバイスをロックしようとしています。しかし、私はまだ解決策を見つけることができません。プログラムでAndroid froyo2.2をロックしたい。keyguardmanagerとDeviceAdminManagerを試しました。
私のアプリはデバイスをリモートでロックすることです。ロックするコードワードを含むメッセージを受信すると、電話がロックされます。解決策として多くのApi_demoプログラムを見つけましたが、そこからロックコードだけを抽出して解決策を見つけることはできません。
アクティビティクラスは内部クラスで、外部クラスは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);
このタスクを解決するには、 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();
アクティビティクラスは内部クラスでなければならず、外部クラスは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);
}
}
}