public
class
MainActivity
extends
Activity {
private
final
static
String LOG_TAG =
"DevicePolicyAdmin"
;
DevicePolicyManager tDevicePolicyManager;
ComponentName tDevicePolicyAdmin;
private
CheckBox tAdminEnabledCheckbox;
protected
static
final
int
REQUEST_ENABLE =
1
;
protected
static
final
int
SET_PASSWORD =
2
;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_device_policy_admin);
tDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
tDevicePolicyAdmin =
new
ComponentName(
this
,
MyDevicePolicyReceiver.
class
);
tAdminEnabledCheckbox = (CheckBox) findViewById(R.id.checkBox1);
}
@Override
protected
void
onResume() {
super
.onResume();
if
(isMyDevicePolicyReceiverActive()) {
tAdminEnabledCheckbox.setChecked(
true
);
}
else
{
tAdminEnabledCheckbox.setChecked(
false
);
}
tAdminEnabledCheckbox
.setOnCheckedChangeListener(
new
CompoundButton.OnCheckedChangeListener() {
@Override
public
void
onCheckedChanged(CompoundButton buttonView,
boolean
isChecked) {
if
(isChecked) {
Intent intent =
new
Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(
DevicePolicyManager.EXTRA_DEVICE_ADMIN, tDevicePolicyAdmin);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, getString(R.string.admin_explanation));
startActivityForResult(intent, REQUEST_ENABLE);
}
else
{
tDevicePolicyManager
.removeActiveAdmin(tDevicePolicyAdmin);
}
}
});
}
@Override
protected
void
onActivityResult(
int
requestCode,
int
resultCode, Intent data) {
super
.onActivityResult(requestCode, resultCode, data);
DevicePolicyManager t;
t = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
t.lockNow();
}
private
boolean
isMyDevicePolicyReceiverActive() {
return
tDevicePolicyManager
.isAdminActive(tDevicePolicyAdmin);
}
public
static
class
MyDevicePolicyReceiver
extends
DeviceAdminReceiver {
@Override
public
void
onDisabled(Context context, Intent intent) {
Toast.makeText(context,
"Device Admin Disabled"
,
Toast.LENGTH_SHORT).show();
}
@Override
public
void
onEnabled(Context context, Intent intent) {
Toast.makeText(context,
"Device Admin is now enabled"
,
Toast.LENGTH_SHORT).show();
}
@Override
public
CharSequence onDisableRequested(Context context, Intent intent) {
CharSequence disableRequestedSeq =
"Requesting to disable Device Admin"
;
return
disableRequestedSeq;
}
@Override
public
void
onPasswordChanged(Context context, Intent intent) {
Toast.makeText(context,
"Device password is now changed"
,
Toast.LENGTH_SHORT).show();
DevicePolicyManager localDPM = (DevicePolicyManager) context
.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName localComponent =
new
ComponentName(context,
MyDevicePolicyReceiver.
class
);
localDPM.setPasswordExpirationTimeout(localComponent, 0L);
}
@Override
public
void
onPasswordExpiring(Context context, Intent intent) {
Toast.makeText(
context,
"Device password is going to expire, please change to a new password"
,
Toast.LENGTH_LONG).show();
DevicePolicyManager localDPM = (DevicePolicyManager) context
.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName localComponent =
new
ComponentName(context,
MyDevicePolicyReceiver.
class
);
long
expr = localDPM.getPasswordExpiration(localComponent);
long
delta = expr - System.currentTimeMillis();
boolean
expired = delta < 0L;
if
(expired) {
localDPM.setPasswordExpirationTimeout(localComponent, 10000L);
Intent passwordChangeIntent =
new
Intent(
DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
passwordChangeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(passwordChangeIntent);
}
}
@Override
public
void
onPasswordFailed(Context context, Intent intent) {
Toast.makeText(context,
""
, Toast.LENGTH_SHORT)
.show();
}
@Override
public
void
onPasswordSucceeded(Context context, Intent intent) {
Toast.makeText(context,
"Access Granted"
, Toast.LENGTH_SHORT)
.show();
}
@Override
public
void
onReceive(Context context, Intent intent) {
Log.i(LOG_TAG,
"MyDevicePolicyReciever Received: "
+ intent.getAction());
super
.onReceive(context, intent);
}
}
}