Android 一键锁屏(系统管理员方式实现)

1.首先需要创建一个广播接收者,继承DeviceAdminReceiver,无需重写任何实现;

public class LockReceiver extends DeviceAdminReceiver {
}

  当然,广播接收者要注册

<!-- 设备管理 -->
        <receiver android:name=".LockReceiver"
            android:label="@string/app_name"
            android:description="@string/app_name"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data android:name="android.app.device_admin"
                android:resource="@xml/lock_screen" />
            <intent-filter>
                <action
                    android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>
        </receiver>

里面引入了  lock_screen.xml ,要在res目录新建xml目录,然后新建 res/xml/lock_screen.xml

<device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
    <uses-policies>
        <!-- 锁定屏幕 -->
        <force-lock />
    </uses-policies>
</device-admin>

当然,用系统管理员还可以做更多的其他配置,这里我们只用到了锁屏比如:

<?xml version="1.0" encoding="UTF-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-policies>
        <!-- 强行锁定  在里仅这个是需要的-->
        <force-lock />
        <!-- 清除所有数据(恢复出厂设置) -->
        <wipe-data />
        <!-- 重置密码 -->
        <reset-password />
        <!-- 限制密码选择 -->
        <limit-password />
        <!-- 监控登录尝试 -->
        <watch-login />
    </uses-policies>
</device-admin>

3.通过设备管理器赋予超级管理员权限并进行锁屏

public class MainActivity extends Activity {


    private DevicePolicyManager mDevicePolicyManager;
    private ComponentName mComponentName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //获取设备管理器
        mDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        mComponentName = new ComponentName(this, LockReceiver.class);
        // 判断该组件是否有系统管理员的权限
        if (mDevicePolicyManager.isAdminActive(mComponentName)) {
            mDevicePolicyManager.lockNow(); //锁屏
            //结束进程
            finish();
            android.os.Process.killProcess(android.os.Process.myPid());
        } else {
            activeManager();//激活权限
        }


    }


    /**
     * 激活设备管理器获取权限
     */
    private void activeManager() {
        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponentName);
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "一键锁屏");
        startActivity(intent);
    }


}
这样就ok了,再送一个icon

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 4.0 及以上版本中,可以使用 DevicePolicyManager 类来实现一键锁屏功能。以下是实现的步骤: 1. 在 AndroidManifest.xml 文件中添加如下权限: ```xml <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> <uses-permission android:name="android.permission.RESET_PASSWORD"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.WRITE_SETTINGS"/> ``` 2. 创建一个继承自 DeviceAdminReceiver 的广播接收器类: ```java public class MyDeviceAdminReceiver extends DeviceAdminReceiver { } ``` 3. 在项目中获取 DevicePolicyManager 对象: ```java DevicePolicyManager mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); ``` 4. 在 Activity 中注册广播接收器(可以在 onCreate 方法中调用): ```java ComponentName mAdminName = new ComponentName(this, MyDeviceAdminReceiver.class); Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName); startActivityForResult(intent, 0); ``` 5. 调用 DevicePolicyManager 的 lockNow 方法实现一键锁屏: ```java if (mDPM.isAdminActive(mAdminName)) { mDPM.lockNow(); } else { Toast.makeText(this, "请先激活设备管理器", Toast.LENGTH_SHORT).show(); } ``` 注意:在实现一键锁屏功能时,需要用户同意激活设备管理器。如果用户没有激活设备管理器,则无法实现一键锁屏功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值