Android的一键锁屏

来源:互联网 发布:程序员如何入门 编辑:程序博客网 时间:2024/06/05 15:34

今天我要讲一下Android的一键锁屏。

这需要用到DevicePolicyMAnager【设配管理器】和ComponentName(

DevicePolicyManager  可以通过他获取设配得管理权限

【方法】

LockNow()   在这个例子中用到的、实行锁屏的动作

ComponentName    可以打开其他应用的Activity的服务、

MainActivity。Java

   private DevicePolicyManager manager;  
    private ComponentName  componentName;
     
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i("---->Lock!!!","start lock");
        manager = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
        componentName = new ComponentName(MainActivity.this,LockScreen.class);
        //判断是否有权限
        if(manager.isAdminActive(componentName)){
        manager.lockNow();
        //kill掉Activity 避免浪费程序
        android.os.Process.killProcess(android.os.Process.myPid());
        finish();
        }else{
        activeManager();
        }
    }


private void activeManager() {
//激活获取设配的权限
Intent it = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
it.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,componentName);
it.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "我的锁屏");
startActivity(it);
finish();
}

}

LockScreen.java   

import android.app.admin.DeviceAdminReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;


public class LockScreen extends DeviceAdminReceiver{      //一定要继承DeviceAdminReceiver类
         public void onReceiver(Context context,Intent it){
        Log.i("-----Lock","接收");
        super.onReceive(context, it);
         }
         public void onEnabled(Context context,Intent it){
        Log.i("----Lock!!1","激活");
        super.onEnabled(context, it);
         }
         public void onDisabled(Context context,Intent it){
        Log.i("-----Lock!!!","取消");
        super.onDisabled(context, it);
         
         }
         
}


AndroidManifest。xml文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.my6"
    android:versionCode="1"
    android:versionName="1.0" >


    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="19" />


    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.android.my6.MainActivity"
            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="com.android.my6.LockScreen"
            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>
          <uses-permission
            android:name="android.permission.DISABLE_KEYGUARD"/>
</manifest>


0 0
原创粉丝点击