锁屏小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了。如有不足之处,请指出,谢谢!

源码链接

欢迎关注公众号
Android一键锁屏代码_第1张图片

更多相关文章

  1. Android截屏实现——亲测有效代码
  2. android APP 获得system权限
  3. android 权限定义的文件,位置
  4. [置顶] Android SDK中的例子的源代码
  5. Android 拨打电话功能
  6. android通过chmod命令实现文件权限修改

随机推荐

  1. Android(安卓)http get/post传递参数
  2. android中activity栈详解
  3. Android(安卓)大文件上传时,处理上传进度
  4. Android(安卓)requires compiler complia
  5. android 6.0以下,拒绝录音权限后处理
  6. Android(安卓)Service使用
  7. Android(安卓)killall 命令
  8. android 获取应用签名文件的sha1值、md5(
  9. android SQLite (Cursor SQLiteDatabase S
  10. 常用布局及基本 UI 控件(2)