android 锁屏
16lz
2022-05-24
下面就以我的工程为例进行详细说明:
工程结构
LockScreen.java
view plain copy to clipboard print ?- packagecom.app;
- importandroid.app.Activity;
- importandroid.app.admin.DeviceAdminReceiver;
- importandroid.app.admin.DevicePolicyManager;
- importandroid.content.ComponentName;
- importandroid.content.Context;
- importandroid.content.Intent;
- importandroid.os.Bundle;
- publicclassLockScreenextendsDeviceAdminReceiver{
- staticfinalintRESULT_ENABLE=1;
- publicstaticclassControllerextendsActivity{
- DevicePolicyManagermDPM;
- ComponentNamemDeviceAdminSample;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- //首先我们要获得android设备管理代理
- mDPM=(DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
- //LockScreen继承自DeviceAdminReceiver
- mDeviceAdminSample=newComponentName(Controller.this,
- LockScreen.class);
- //得到当前设备管理器有没有激活
- booleanactive=mDPM.isAdminActive(mDeviceAdminSample);
- if(!active){
- //如果没有激活的话,就去提示用户激活(第一次运行程序时)
- getAdmin();
- }else{
- //如果已经激活的话,就执行立即锁屏
- mDPM.lockNow();
- }
- //killMyself,锁屏之后就立即kill掉我们的Activity,避免资源的浪费;
- android.os.Process.killProcess(android.os.Process.myPid());
- }
- publicvoidgetAdmin(){
- //Launchtheactivitytohavetheuserenableouradmin.
- Intentintent=newIntent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
- intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
- mDeviceAdminSample);
- intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
- "欢迎您的使用!我自己写的程序有问题可以联系我!");
- startActivityForResult(intent,RESULT_ENABLE);
- }
- }
- }
上面就是整个应用程序的核心代码及简单逻辑,下面就是相关配置文件
1,AndroidManifest.xml
view plain copy to clipboard print ?- <?xmlversion="1.0"encoding="utf-8"?>
- <manifestxmlns:android="http://schemas.android.com/apk/res/android"
- package="com.app"
- android:versionCode="1"
- android:versionName="1.0">
- <uses-sdkandroid:minSdkVersion="8"/>
- <applicationandroid:label="@string/app_name"
- android:icon="@drawable/icon">
- <activityandroid:name=".LockScreen$Controller"android:theme="@android:style/Theme.Translucent">
- <intent-filter>
- <actionandroid:name="android.intent.action.MAIN"/>
- <categoryandroid:name="android.intent.category.DEFAULT"/>
- <categoryandroid:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- </activity>
- <receiverandroid:name=".LockScreen"
- android:permission="android.permission.BIND_DEVICE_ADMIN">
- <meta-dataandroid:name="android.app.device_admin"
- android:resource="@xml/device_admin_sample"/>
- <intent-filter>
- <actionandroid:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
- </intent-filter>
- </receiver>
- </application>
- </manifest>
在这个文件里有一个非常重要的属性,<activity android:name=".LockScreen$Controller" android:theme="@android:style/Theme.Translucent">这个里面的android:theme="@android:style/Theme.Translucent",是设置应用程序透明,
这样就不会出现当我们锁屏时会出现闪屏,至于为什么闪屏大家执行程序后就会明白了
2,device_admin_sample.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实现应用下载并自动安装apk包
- Mac 完全卸载 Android(安卓)Studio
- Android中和service进行本地通讯
- Android(安卓)如何使一个service 开机启动
- Android应用程序使用Localsocket与Linux层通信
- 基于Android客户端的人人网开放平台开发系列教程
- android开发资源
- 3.创建第一个android项目
- Android的几种数据存储方式