下面就以我的工程为例进行详细说明:

工程结构

LockScreen.java

view plain copy to clipboard print ?
  1. packagecom.app;
  2. importandroid.app.Activity;
  3. importandroid.app.admin.DeviceAdminReceiver;
  4. importandroid.app.admin.DevicePolicyManager;
  5. importandroid.content.ComponentName;
  6. importandroid.content.Context;
  7. importandroid.content.Intent;
  8. importandroid.os.Bundle;
  9. publicclassLockScreenextendsDeviceAdminReceiver{
  10. staticfinalintRESULT_ENABLE=1;
  11. publicstaticclassControllerextendsActivity{
  12. DevicePolicyManagermDPM;
  13. ComponentNamemDeviceAdminSample;
  14. @Override
  15. protectedvoidonCreate(BundlesavedInstanceState){
  16. super.onCreate(savedInstanceState);
  17. //首先我们要获得android设备管理代理
  18. mDPM=(DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
  19. //LockScreen继承自DeviceAdminReceiver
  20. mDeviceAdminSample=newComponentName(Controller.this,
  21. LockScreen.class);
  22. //得到当前设备管理器有没有激活
  23. booleanactive=mDPM.isAdminActive(mDeviceAdminSample);
  24. if(!active){
  25. //如果没有激活的话,就去提示用户激活(第一次运行程序时)
  26. getAdmin();
  27. }else{
  28. //如果已经激活的话,就执行立即锁屏
  29. mDPM.lockNow();
  30. }
  31. //killMyself,锁屏之后就立即kill掉我们的Activity,避免资源的浪费;
  32. android.os.Process.killProcess(android.os.Process.myPid());
  33. }
  34. publicvoidgetAdmin(){
  35. //Launchtheactivitytohavetheuserenableouradmin.
  36. Intentintent=newIntent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
  37. intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
  38. mDeviceAdminSample);
  39. intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
  40. "欢迎您的使用!我自己写的程序有问题可以联系我!");
  41. startActivityForResult(intent,RESULT_ENABLE);
  42. }
  43. }
  44. }


上面就是整个应用程序的核心代码及简单逻辑,下面就是相关配置文件

1,AndroidManifest.xml

view plain copy to clipboard print ?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.app"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdkandroid:minSdkVersion="8"/>
  7. <applicationandroid:label="@string/app_name"
  8. android:icon="@drawable/icon">
  9. <activityandroid:name=".LockScreen$Controller"android:theme="@android:style/Theme.Translucent">
  10. <intent-filter>
  11. <actionandroid:name="android.intent.action.MAIN"/>
  12. <categoryandroid:name="android.intent.category.DEFAULT"/>
  13. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  14. </intent-filter>
  15. </activity>
  16. <receiverandroid:name=".LockScreen"
  17. android:permission="android.permission.BIND_DEVICE_ADMIN">
  18. <meta-dataandroid:name="android.app.device_admin"
  19. android:resource="@xml/device_admin_sample"/>
  20. <intent-filter>
  21. <actionandroid:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
  22. </intent-filter>
  23. </receiver>
  24. </application>
  25. </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>

安装并激活此应用,如果要卸载操作如下:

设置->安全->选择设备管理器

把应用程序的钩钩给钩掉就可以卸载了。

更多相关文章

  1. Android实现应用下载并自动安装apk包
  2. Mac 完全卸载 Android(安卓)Studio
  3. Android中和service进行本地通讯
  4. Android(安卓)如何使一个service 开机启动
  5. Android应用程序使用Localsocket与Linux层通信
  6. 基于Android客户端的人人网开放平台开发系列教程
  7. android开发资源
  8. 3.创建第一个android项目
  9. Android的几种数据存储方式

随机推荐

  1. Android下修改SeekBar样式
  2. android---自带样式
  3. RatingBar 不可点击
  4. Android下修改SeekBar样式
  5. Android控件布局属性大全
  6. android内置的图片资源
  7. android圆形进度条颜色的设置
  8. android相对布局属性详解
  9. EditText 的属性
  10. android:toXDelta="-100%p"