欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android编程实现一键锁屏的方法

程序员文章站 2023-12-11 14:56:46
本文实例讲述了android编程实现一键锁屏的方法。分享给大家供大家参考,具体如下: 这里要用到下面两个类: deviceadminreceiver 设备管理组件。这个...

本文实例讲述了android编程实现一键锁屏的方法。分享给大家供大家参考,具体如下:

这里要用到下面两个类:

deviceadminreceiver 设备管理组件。这个类提供了一个方便解释由系统发出的意图的动作。你的设备管理应用程序必须包含一个deviceadminreceiver的子类。本程序中,就代表一个手机上的设备管理器.

devicepolicymanager 一个管理设备上规范的类。 大多数客户端必须声明一个用户当前已经启用的deviceadminreceiver。 这个devicepolicymanager为一个或者多个deviceadminreceiver实例管理这些规范。

devicepolicymanager 的实例有个方法叫locknow可以直接锁定屏幕.但是在这之前,需要激活程序中的设备管理器.

下面是主类lockactivity

package com.iceman.test; 
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 lockactivity extends activity { 
  private devicepolicymanager policymanager; 
  private componentname componentname; 
  @override 
  public void oncreate(bundle savedinstancestate) { 
    super.oncreate(savedinstancestate); 
    setcontentview(r.layout.main);  
  } 
  public void lockscreen(view v){
    policymanager = (devicepolicymanager) getsystemservice(context.device_policy_service); 
    componentname = new componentname(this, lockreceiver.class); 
    if (policymanager.isadminactive(componentname)) {//判断是否有权限(激活了设备管理器) 
      policymanager.locknow();// 直接锁屏 
      android.os.process.killprocess(android.os.process.mypid()); 
    }else{ 
      activemanager();//激活设备管理器获取权限 
    }   
  }
  // 解除绑定
  public void bind(view v){
   if(componentname!=null){
    policymanager.removeactiveadmin(componentname);
    activemanager();
   }
  }
  @override 
  protected void onresume() {//重写此方法用来在第一次激活设备管理器之后锁定屏幕 
    if (policymanager!=null && policymanager.isadminactive(componentname)) { 
      policymanager.locknow(); 
      android.os.process.killprocess(android.os.process.mypid()); 
    } 
    super.onresume(); 
  } 
  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); 
  } 
} 

下面是设备管理器类lockreceiver,这是一个继承自deviceadminreceiver的类,可以接收到激活/接触激活的广播,进行下一步操作,本程序中,只是简单打印一下信息.

import android.app.admin.deviceadminreceiver; 
import android.content.context; 
import android.content.intent; 
public class lockreceiver extends deviceadminreceiver{ 
  @override 
  public void onreceive(context context, intent intent) { 
    super.onreceive(context, intent); 
    system.out.println("onreceiver"); 
  } 
  @override 
  public void onenabled(context context, intent intent) { 
    system.out.println("激活使用"); 
    super.onenabled(context, intent); 
  } 
  @override 
  public void ondisabled(context context, intent intent) { 
    system.out.println("取消激活"); 
    super.ondisabled(context, intent); 
  } 
} 

主配置文件:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  package="com.iceman.test" 
  android:versioncode="1" 
  android:versionname="1.0" > 
  <uses-sdk android:minsdkversion="9" /> 
  <application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
      android:name=".lockactivity" 
      android:label="@string/app_name" 
      android:theme="@android:style/theme.translucent" > 
      <intent-filter> 
        <action android:name="android.intent.action.main" /> 
        <category android:name="android.intent.category.launcher" /> 
      </intent-filter> 
    </activity> 
    <receiver 
      android:name=".lockreceiver" 
      android:description="@string/app_name" 
      android:label="@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> 
  </application> 
</manifest> 

其中lock_screen是设备管理器的权限声明,需要在res/xml目录下以xml文件形式定义

<?xml version="1.0" encoding="utf-8"?> 
<device-admin xmlns:android="http://schemas.android.com/apk/res/android" > 
  <uses-policies> 
    <!-- 锁定屏幕 --> 
    <force-lock /> 
  </uses-policies> 
</device-admin> 

ok.现在自己也可以做一键锁屏了.不用去网上找各种各样带广告带推送的了.

希望本文所述对大家android程序设计有所帮助。

上一篇:

下一篇: