android 一键锁屏实现
16lz
2021-12-04
参考 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:resource="@xml/device_admin" />
xml文件如下
3,源码地址https://f-droid.org/repo/it.reyboz.screenlock_2_src.tar.gz
更多相关文章
- 使用程序创建Android桌面快捷方式
- 动态设置 view 宽高
- 第3.2.1节 android基本视图
- 常见UI控件的使用-富文本、textview
- android上传图片至服务器
- 使用代码为textview设置drawableLeft
- Android(安卓)面试题之基础(不断更新)
- TextView设置一行最多显示6个字是什么属性?
- Android(安卓)之开机启动Service