我只是想分享我制作设备管理应用程序的代码,并在最后寻求一些帮助。我已经提到了这个链接:
这是清单代码:
您必须以下列方式声明广播接收器,属性是不言自明的。
<receiver
android:name=".DeviceAdmin"
android:description="@string/data"
android:label="Mobile Security"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/policies" />
<intent-filter android:priority="1000">
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
android:resource="@xml/policies" 这个 xml 文件包含要使用的策略列表。
现在您需要像这样声明一个 DeviceAdminReceiver 的子类,用于向设备的设备管理员注册您的应用程序:
public class DeviceAdmin extends DeviceAdminReceiver{
@Override
public void onDisabled(Context context, Intent intent) {
// TODO Auto-generated method stub
super.onDisabled(context, intent);
Toast.makeText(context, "App is UnLocked and can be uninstalled.", Toast.LENGTH_SHORT).show();
}
@Override
public void onEnabled(Context context, Intent intent) {
// TODO Auto-generated method stub
super.onEnabled(context, intent);
Toast.makeText(context, "App is Locked and cannot be uninstalled.", Toast.LENGTH_SHORT).show();
}
}
两种方法 onDesable() 和 onEnable() 仅用于在用户激活或停用管理时向用户发送消息。
现在我正在处理锁定和解锁应用程序的活动:
btnLock.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ComponentName component = new ComponentName(StartActivity.this, DeviceAdmin.class);
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, component);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"Lock this app from being uninstalled");
startActivity(intent);
btnLock.setEnabled(false);
btnUnlock.setEnabled(true);
}
});
btnUnlock.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
DevicePolicyManager dPm = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName component = new ComponentName(StartActivity.this, DeviceAdmin.class);
dPm.removeActiveAdmin(component);
btnUnlock.setEnabled(false);
btnLock.setEnabled(true);
}
});
我想设置一个密码,每当我的应用程序从设备管理员停用时都必须询问该密码。