
package com.lee.onekeylock;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
public class MainActivity extends Activity {
private static final int REQUEST_CODE = 10000;
private DevicePolicyManager policyManager;
private ComponentName componentName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
lockScreen();
}
private void lockScreen() {
// 获取设备管理服务
policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
// AdminReceiver 继承自 DeviceAdminReceiver
componentName = new ComponentName(this, AdminReceiver.class);
boolean active = policyManager.isAdminActive(componentName);
if (!active) {
// 若无权限
activeManage(componentName);// 去获得权限
} else {
policyManager.lockNow();// 直接锁屏
finish();
}
}
private void activeManage(ComponentName componentName) {
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
"请求锁屏激活,请确认激活才能锁屏!");
startActivityForResult(intent, REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 获取权限成功,立即锁屏并finish自己,否则继续获取权限
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
policyManager.lockNow();
finish();
} else {
activeManage(componentName);
}
super.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
System.exit(0);// 退出程序
}
}
AdminReceiver.java
package com.lee.onekeylock;
import android.app.admin.DeviceAdminReceiver;
public class AdminReceiver extends DeviceAdminReceiver{}
lock_screen.xml
AndroidManifest.xml
style.xml
以上风格启动的时候不会有一闪的现象。
App下载:OneKeyLock.apk 工程下载:OneKeyLock
收藏的用户(0) X
正在加载信息~
推荐阅读
站点信息
- 文章2328
- 用户1339
- 访客12691206