DevicePolicyManager deviceManger;
ActivityManager activityManager;
ComponentName compName;
thêm mã trong onCreate()
deviceManger = (DevicePolicyManager)getSystemService(
Context.DEVICE_POLICY_SERVICE);
activityManager = (ActivityManager)getSystemService(
Context.ACTIVITY_SERVICE);
compName = new ComponentName(this, DeviceAdminLock.class);
thêm mã trong file manifest
<receiver android:name=".DeviceAdminLock"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin"
android:resource="@xml/device_admin_sample" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
Tạo tệp tài nguyên xml trong res/xml dưới dạng device_admin_sample.xml và thêm thông tin sau -
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
<expire-password />
<encrypted-storage />
<disable-camera />
</uses-policies>
Add quyền trong file manifest -
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
Tạo một lớp thu kéo dài lớp DeviceAdminReceiver.
public class DeviceAdminLock extends DeviceAdminReceiver {
@Override
public void onEnabled(Context context, Intent intent) {
}
@Override
public CharSequence onDisableRequested(Context context, Intent intent) {
return "This is an optional message to warn the user about disabling.";
}
@Override
public void onDisabled(Context context, Intent intent) {
}
@Override
public void onPasswordChanged(Context context, Intent intent) {
}
@Override
public void onPasswordFailed(Context context, Intent intent) {
}
@Override
public void onPasswordSucceeded(Context context, Intent intent) {
}
}
hỏi kích hoạt cho phép khóa trong lớp hoạt động
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,compName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"Additional text explaining why this needs to be added.");
startActivityForResult(intent, 1);
phép kiểm tra được đưa ra hoặc không
boolean active = deviceManger.isAdminActive(compName);
if (active) {
// if available then lock
deviceManger.lockNow();
}
thiết bị unlock
deviceManger.removeActiveAdmin(compName);
Để Unlock
KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
final KeyguardManager.KeyguardLock kl = km .newKeyguardLock("MyKeyguardLock");
kl.disableKeyguard();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
wakeLock.acquire();
mà câu trả lời bạn đã thử vì vậy chúng tôi biết không để đề nghị họ? – CodingIntrigue
"không có ai đang làm việc" không phải là một mô tả hữu ích về các triệu chứng của bạn. Hãy giải thích * hoàn toàn và chính xác * những gì bạn đã thử và những vấn đề bạn gặp phải. – CommonsWare
@BladeOrz: Tôi đã thêm một số trang đã truy cập liên kết –