android 一键锁屏实现

参考     https://f-droid.org/repository/browse/?fdid=it.reyboz.screenlock

1,写一个页面,主题用android:theme="@android:style/Theme.NoDisplay" 这样就没有闪退的效果。

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;
import android.util.Log;

import com.example.lenovo.bean.R;

public class MainActivity extends Activity {

   final static int ENABLE_ADMIN = 1;
   final static int SUCESS = -1;

   private ComponentName mAdminName = null;

   public  void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      mAdminName = new ComponentName(this, AdminManageReceiver.class);
      DevicePolicyManager mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);//在设备上执行管理政策
      if (!mDPM.isAdminActive(mAdminName)) {//如果未激活
         showAdminManagement();//打开手机设备管理器
      }

      if (mDPM.isAdminActive(mAdminName)) {
         mDPM.lockNow();//执行锁屏
      } else {
         Log.e("screenlock", "Unable to lock the phone D:");
      }

      finish();
   }

   private void showAdminManagement() {
      // TODO Auto-generated method stub
      Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);//打开手机设备管理器的intent
      intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName);
      intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
            R.string.desc_enable_admin);
      startActivityForResult(intent, ENABLE_ADMIN);

   }
}

,2,注册一个设备管理员权限接收器,并绑定权限BIND_DEVICE_ADMIN


import android.app.admin.DeviceAdminReceiver;


public class AdminManageReceiver extends DeviceAdminReceiver {
        //注册一个接收器接受设备管理器是否激活
}


    android:name="it.reyboz.screenslock.MainActivity"
    android:theme="@android:style/Theme.NoDisplay"
    android:label="@string/app_name"
    android:excludeFromRecents="true" >
    
        android:name="android.intent.action.MAIN" />
        android:name="android.intent.category.DEFAULT" />
        android:name="android.intent.category.LAUNCHER" />
        android:name="android.intent.action.ASSIST" />
    


    android:name="it.reyboz.screenslock.AdminManageReceiver"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN" >
            android:name="android.app.device_admin"
        android:resource="@xml/device_admin" />

    
        android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
    


需要配置强制锁屏

Android 2.2 SDK提供了一个可管理和操作设备的API叫DevicePolicyManager,使用这个API你可以接管手机的应用权限,对手机做出很多大胆的操作,比如锁屏、恢复出厂设置、设置密码、强制清除密码,修改密码、设置屏幕灯光渐暗时间间隔等操作。

                android:name="android.app.device_admin"
                android:resource="@xml/device_admin" />


xml文件如下


   
         //强制锁屏,这里还可以配置其他的如恢复出厂设置、设置密码
   


android 一键锁屏实现_第1张图片

3,源码地址https://f-droid.org/repo/it.reyboz.screenlock_2_src.tar.gz

你可能感兴趣的:(android 一键锁屏实现)