抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > Android一键关闭手机屏幕

Android一键关闭手机屏幕

时间:2021-09-13 04:29:15

相关推荐

一、概述

最近从应用市场下载了一款关闭手机屏幕的软件,这款软件很好的实现了关闭手机屏幕的功能,然而也加入了其他如连网,定位,安装包大小竟然到了3M,所以想动手自己写一个简单纯净的关屏软件。

二、开发

创建好新工程后,想到android应该有相关API,应该要用户授权之类的,然后结合从网上找到的资料和自己的总结,完成了开发。

1.首先,用户授权不是声明权限,而是激活自己的软件的锁屏功能,android把这个激活封装了一个activity,我们声明一个隐式意图跳到这个activity即可。而这个隐式意图是DeviceAdminReceiver这个广播的类对象,我们只需要创建一个广播继承即可,如下

package com.lzy.lockscreen;import android.app.admin.DeviceAdminReceiver;public class MyDeviceAdminReceiver extends DeviceAdminReceiver {}

2.类中不需要任何代码,在Manifest文件中,声明如下

<receiver android:name=".MyDeviceAdminReceiver"><meta-data android:name="android.app.device_admin"android:resource="@xml/my_admin" /><intent-filter><action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /></intent-filter></receiver>

3.这里指定了一个xml文件my_admin,它的作用就是去列出自己需要激活的权限

<?xml version="1.0" encoding="utf-8"?><device-admin><uses-policies> <force-lock /></uses-policies></device-admin>

这里的force-lock就是关闭手机屏幕,还有这些激活,有兴趣的可以试一下,

limit-password 设置密码的规则

watch-login 监控屏幕解锁尝试次数

reset-password 更改屏幕解锁密码

force-lock 设备锁屏

wipe-data 删除全部的数据

4.然后就是写主activity的逻辑了,贴出代码吧

package com.lzy.lockscreen;import android.app.admin.DevicePolicyManager;import ponentName;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.TextView;public class MainActivity extends AppCompatActivity implements View.OnClickListener {DevicePolicyManager policyManager;ComponentName componentName;private TextView mTV;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTV = ((TextView) findViewById(R.id.tv));mTV.setOnClickListener(this);policyManager = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);componentName = new ComponentName(this, MyDeviceAdminReceiver.class);if (!policyManager.isAdminActive(componentName)) {goSetActivity();} else {systemLock();}}private void goSetActivity() {Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);startActivityForResult(intent, 1);}/*** 锁屏并关闭屏幕*/private void systemLock() {if (policyManager.isAdminActive(componentName)) {Window localWindow = getWindow();WindowManager.LayoutParams localLayoutParams = localWindow.getAttributes();localLayoutParams.screenBrightness = 0.05F;localWindow.setAttributes(localLayoutParams);policyManager.lockNow();}finish();}@Overridepublic void onClick(View view) {if (view == mTV) {goSetActivity();}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (1 == requestCode) {if (RESULT_OK == resultCode) {systemLock();} else if (RESULT_CANCELED == resultCode) {//用户拒绝激活}}}}

大家可以看到仅仅60多行代码即可实现功能,有激活成功和失败的回调,交互友好,相信大家一看就明白,代码已经上传到github,地址:/lzyang187/LockScreen

5.thks ,have a good time!

如果觉得《Android一键关闭手机屏幕》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。