参考     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

更多相关文章

  1. 【源码分享下载】每日更新之Android项目源码---手机天气预报系统
  2. Android完美解决输入框EditText隐藏密码打勾显示密码问题
  3. 【Android手机游戏】贪吃蛇(1)
  4. 用angularjs写android应用连手机调试的步骤
  5. Android是什么 之三手机之硬件形态
  6. Android Studio在Gradle中隐藏Keystore密码
  7. (Android)react-native获得手机的Android版本号
  8. 安卓手机常见名词解释

随机推荐

  1. 给android设置代理
  2. android 存储操作 大小显示换算 kb mb KB
  3. Android(安卓)对.properties文件的读取
  4. android 开发 实例 下部主导航(1)
  5. Android(安卓)app widget 支持的Layout和
  6. android ArcGIS学习笔记一
  7. Android中的bitmap,drawable,canvas以及pai
  8. Delphi Android(安卓)USB声明文件
  9. android studio 2.1.1 启动abd出错
  10. Android(安卓)studio 修改SDK路径