首先看这里:
要控制此策略,设备管理员必须在其元数据的“使用策略”部分中具有“强制锁定”标签。
调用设备管理员必须请求 USES_POLICY_FORCE_LOCK 才能调用此方法;如果没有,将引发安全异常。
根据你得到的代码,这里有一个很好的解释,说明你的情况可能有什么问题(当然,这里提供的任何代码都可以使用!)。
我曾多次听说,调用两次代码DevicePolicyManager.lockNow()
就可以解决问题,这是一种方法:
mDPM = (DevicePolicyManager)getApplicationContext().getSystemService("device_policy");
Handler handlerUI = new Handler();
handlerUI.postDelayed(new Runnable() {
@Override
public void run() {
mDPM.lockNow();
}
}, 200);
finish();
mDPM.lockNow();
在这里,我发现了同一件事的更详细的版本:
Android DevicePolicyManager lockNow() problem
public class SMSMessagingActivity extends Activity {
/** Called when the activity is first created. */
public static DevicePolicyManager mDPM;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
}
public static void LockNow(){
mDPM.lockNow();
}
}
ComponentName devAdminReceiver; // this would have been declared in your class body
// then in your onCreate
mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
devAdminReceiver = new ComponentName(context, deviceAdminReceiver.class);
//then in your onResume
boolean admin = mDPM.isAdminActive(devAdminReceiver);
if (admin)
mDPM.lockNow();
else Log.i(tag,"Not an admin");
让我们希望最后的解决方法能够正常工作。
干杯