Define in your activity :
private DevicePolicyManager mDevicePolicyManager;
private ComponentName mComponentName;
mDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mComponentName = new ComponentName(this, MyAdminReceiver.class);
register and unregister click on main activity :
txtRegister.setOnClickListener(new OnClickListener() {
//
@Override
public void onClick(View v) {
Intent intent = new Intent(
DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
mComponentName);
intent.putExtra(
DevicePolicyManager.EXTRA_ADD_EXPLANATION,
description);
startActivityForResult(intent, ADMIN_INTENT);
}
});
txtUnRegister.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mComponentName = new ComponentName(MainActivity.this, MyAdminReceiver.class);
mDevicePolicyManager.removeActiveAdmin(mComponentName);
Toast.makeText(getApplicationContext(),
"Admin registration removed",
Toast.LENGTH_SHORT).show();
}
});
create admin class MyAdminReceiver:
import android.app.admin.DeviceAdminReceiver;
public class MyAdminReceiver extends DeviceAdminReceiver{
}
add in your menifist :
<receiver
android:name="MyAdminReceiver"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<meta-data
android:name="android.app.device_admin"
android:resource="@layout/admin" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
create one xml file named admin.xml :
<device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
<uses-policies>
<force-lock />
</uses-policies>
write follwowing code where you want to perform your action (it your click also) in your activity :
boolean isAdmin = mDevicePolicyManager.isAdminActive(mComponentName);
if (isAdmin) {
Handler mHandler = new Handler();
mHandler.post(new Runnable() {
@Override
public void run() {
final Handler handler = new Handler();
Timer t = new Timer();
t.schedule(new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
mDevicePolicyManager.lockNow();
}
});
}
}, delay); // flashing of screen that you want to time delay
}
});
} else {
Toast.makeText(getApplicationContext(), "first register as admin",
Toast.LENGTH_SHORT).show();
}