锁屏小Demo

由于手机关机键最近不好用了,所以就研究研究一键锁屏的小玩意。

首先创建一个工程

布局很简单,就一个button
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/c"    >    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="锁屏"        android:onClick="LockScreen"        android:id="@+id/button"        android:layout_centerVertical="true"        android:layout_centerHorizontal="true" />RelativeLayout>

创建一个广播

广播只需继承DeviceAdminReceiver即可
public class AdminReceiver extends DeviceAdminReceiver {}
当然,别忘了在清单文件中注册需要权限android:permission="android.permission.BIND_DEVICE_ADMIN"
   <receiver         android:name=".AdminReceiver"         android:permission="android.permission.BIND_DEVICE_ADMIN" >         <meta-data             android:name="android.app.device_admin"             android:resource="@xml/device_admin" />         <intent-filter>             <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />         intent-filter>     receiver>
resource中的文件内容为
    <device-admin xmlns:android="http://schemas.android.com/apk/res/android" >    <uses-policies>        <limit-password />        <watch-login />        <reset-password />        <force-lock />        <wipe-data />        <expire-password />        <encrypted-storage />        <disable-camera />    uses-policies>device-admin>
mainActivity中的代码实现
   public void LockScreen(View v){        new Thread(new Runnable() {            @Override            public void run() {                SystemClock.sleep(1000);                dpm = (DevicePolicyManager)                        getSystemService(Context.DEVICE_POLICY_SERVICE);                componentName = new ComponentName(getApplicationContext(),                        AdminReceiver.class);                if (dpm.isAdminActive(componentName)) {//判断是否有权限(激活了设备管理器)                    dpm.lockNow();// 直接锁屏                    //杀死当前应用                    android.os.Process.killProcess(android.os.Process.myPid());                }else{                    activeManager();//激活设备管理器获取权限                }            }        }).start();    }    private void activeManager() {        //使用隐式意图调用系统方法来激活指定的设备管理器        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "一键锁屏");        startActivity(intent);    }
为了避免每次进了应用都要点击Button按钮才可实现功能,所以可以直接在onCreate()方法中实现该功能
    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        ActionBar actionBar = getSupportActionBar();        actionBar.hide();        setContentView(R.layout.activity_main);        new Thread(new Runnable() {            @Override            public void run() {                SystemClock.sleep(1000);                dpm = (DevicePolicyManager)                        getSystemService(Context.DEVICE_POLICY_SERVICE);                componentName = new ComponentName(getApplicationContext(),                        AdminReceiver.class);                if (dpm.isAdminActive(componentName)) {//判断是否有权限(激活了设备管理器)                    dpm.lockNow();// 直接锁屏                    //杀死当前应用                    android.os.Process.killProcess(android.os.Process.myPid());                }else{                    activeManager();//激活设备管理器获取权限                }            }        }).start();    }
由于每次点击桌面图标会需要一点时间去处理逻辑功能,会产生闪屏效果,所以我选择在线程中睡1s钟。当然,可以自己设置一个好看点的背景图片,就Ok了。如有不足之处,请指出,谢谢!

源码链接

欢迎关注公众号

更多相关文章

  1. 利用drozer进行Android渗透测试
  2. Android的framework层音量控制原理分析--hot(key)处理
  3. 利用drozer进行Android渗透测试
  4. androidの亮屏,灭屏,解锁广播使用
  5. android 自定义 permission 权限
  6. android通过chmod命令实现文件权限修改
  7. Android(安卓)拨打电话功能
  8. android APP 获得system权限
  9. android 权限定义的文件,位置

随机推荐

  1. 调用Android短信软件进行短信群发
  2. vue 移动端实现输入框居中
  3. Windows SublimeText内使用NDK编译Androi
  4. Android(安卓)Cursor源码笔记(2)
  5. Android之旋转button视图
  6. 笔记6
  7. android调试工具addr2line使用补充
  8. Android(安卓)Studio @Runwith(AndroidJU
  9. Android(安卓)编程下 Touch 事件的分发和
  10. Android判断设备是否有NavigationBar(虚