专注人工智能在金融领域的应用

Android一键锁屏程序实例

Android一键锁屏程序实例

目前很多手机都通过按电源键进行锁屏,如果每次锁屏都按电源键,那么会影响电源键的使用寿命。下面就讲解一下如何通过程序实现一键锁屏。

从Android2.2开始,提供了锁屏API——lockNow(),锁屏程序可以通过这个方法实现。

首先,我们先来看两个类:

  1. 1.         DevicePolicyManager

这个类的作用是进行设备管理,可以实现锁屏、调节亮度、恢复出厂设置等。

  1. 2.         DeviceAdminReceiver

这个类的父类是BroadcastReceiver,通过其OnReceive方法可以根据不同的Action执行不同的动作。

 

锁屏程序代码

/**

 * @author www.wangbaocai.cn

 */

public class ScreenLockActivity extends Activity {

    private Button buttonLock;

    private ComponentName componentName;

    private DevicePolicyManager policyManager;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_screen_lock);

       buttonLock = (Button) findViewById(R.id.buttonLock);

       // //DeviceAdminReceiverDemo 继承自 DeviceAdminReceiver

       componentName = new ComponentName(this, DeviceAdminReceiverDemo.class);

       // //获得设备管理服务

       policyManager = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);

       // //点击锁屏按钮,触发锁屏事件

       buttonLock.setOnClickListener(new View.OnClickListener() {

           @Override

           public void onClick(View v) {

              // ///判断是否有权限

              if (policyManager.isAdminActive(componentName)) {

                  policyManager.lockNow(); // //有权限,直接锁屏

              } else {

                  adminManager();///获得权限

                  policyManager.lockNow();//执行锁屏操作

              }

              // ////执行锁屏操作后kill当前activity,释放资源

android.os.Process.killProcess(android.os.Process.myPid());

           }

       });

    }

    /**

     * 启动设备管理权限

     */

    public void adminManager(){

       // 启动设备管理(隐式Intent) – 在AndroidManifest.xml中设定相应过滤器

       Intent intent = new Intent(

              DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);

       // 权限列表

       intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,

              componentName);

       // 描述(additional explanation)

       intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,

              “—— 其他描述 ——”);

       startActivityForResult(intent, RESULT_OK);

    }

}

 

AndroidManifest.xml文件

<?xml version=“1.0″ encoding=“utf-8″?>

<manifest xmlns:android=“http://schemas.android.com/apk/res/android”

    package=“com.example.screenlockdemo”

    android:versionCode=“1″

    android:versionName=“1.0″ >

    <uses-sdk

        android:minSdkVersion=“8″

        android:targetSdkVersion=“17″ />

    <application

        android:allowBackup=“true”

        android:icon=“@drawable/ic_launcher”

        android:label=“@string/app_name”

        android:theme=“@style/AppTheme” >

        <activity

            android:name=“com.example.screenlockdemo.activity.ScreenLockActivity”

            android:label=“@string/app_name” >

            <intent-filter>

                <action android:name=“android.intent.action.MAIN” />

                <category android:name=“android.intent.category.LAUNCHER” />

            </intent-filter>

        </activity>

        <receiver

            android:name=“.recevier.DeviceAdminReceiverDemo”

            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>

    </application>

</manifest>

 

其中device_admin.xml(device_admin.xml文件放在res/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>

 

程序效果图如下

请求设备权限界面

《Android一键锁屏程序实例》

锁屏成功

《Android一键锁屏程序实例》

源码下载:Android锁屏程序实例

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>