轻松实现Android锁屏功能
锁屏需要引入设备超级管理员。在文档Android开发文档的Administration中有详细的说明。Android设备管理系统功能和控制访问。
主要有一下几个步骤:
1 创建广播接收者,实现DeviceAdminReceiver
packagecom.andy.lockscreen; importandroid.app.admin.DeviceAdminReceiver; /** *@authorZhang,Tianyou *@version2014年11月20日下午9:51:42 * *特殊的广播接受者接收管理员权限广播 */ publicclassMyAdminextendsDeviceAdminReceiver{ }
2在清单文件中注册该广播(不同普通的广播,需按照说明格式):
<?xmlversion="1.0"encoding="utf-8"?> <manifestxmlns:android="http://schemas.android.com/apk/res/android" package="com.andy.lockscreen" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <receiver android:name=".MyAdmin" android:description="@string/sample_device_admin_description" android:label="@string/sample_device_admin" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android: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>
3在res下创建xml文件夹,创建对应的xml文件device_admin_sample.xml
<device-adminxmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <limit-password/> <watch-login/> <reset-password/> <force-lock/> <wipe-data/> <expire-password/> <encrypted-storage/> <disable-camera/> </uses-policies> </device-admin>
4在values文件下string.xml添加
<stringname="sample_device_admin_description">用户管理员的描述信息</string> <stringname="sample_device_admin">设置管理权限</string>
5界面文件:
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.andy.lockscreen.MainActivity"> <Button android:onClick="openAdmin" android:layout_alignParentTop="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="开启管理员权限"/> <Button android:onClick="lockcreen" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="一键锁屏"/> <Button android:onClick="uninstall" android:layout_alignParentBottom="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="卸载锁屏"/> </RelativeLayout>
6实现锁屏和开启设备管理员权限,卸载文件
packagecom.andy.lockscreen; importandroid.app.Activity; importandroid.app.admin.DevicePolicyManager; importandroid.content.ComponentName; importandroid.content.Intent; importandroid.net.Uri; importandroid.os.Bundle; importandroid.view.View; importandroid.widget.Toast; publicclassMainActivityextendsActivity{ /** *设备策略服务 */ privateDevicePolicyManagerdpm; @Override protectedvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dpm=(DevicePolicyManager)getSystemService(DEVICE_POLICY_SERVICE); } /** *锁屏 * *@paramview */ publicvoidlockcreen(Viewview){ ComponentNamewho=newComponentName(this,MyAdmin.class); //判断是否已经开启管理员权限 if(dpm.isAdminActive(who)){ //锁屏 dpm.lockNow(); //设置屏幕密码第一个是密码第二个是附加参数 dpm.resetPassword("123",0); //清楚数据 //WIPE_EXTERNAL_STORAGE清楚sdcard的数据 //0恢复出厂设置 //dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE); }else{ //如果为未开启提示 Toast.makeText(MainActivity.this,"请先开启管理员权限!",Toast.LENGTH_SHORT) .show(); } } /** *代码开启管理权限 * *@paramview */ publicvoidopenAdmin(Viewview){ //创建一个Intent添加设备管理员 Intentintent=newIntent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); //激活MyAdmin广播接收着 ComponentNamewho=newComponentName(this,MyAdmin.class); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,who); //说明用户开启管理员权限的好处 intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "开启可以一键锁屏,防止勿碰"); startActivity(intent); Toast.makeText(MainActivity.this,"管理员权限已开启!",Toast.LENGTH_SHORT).show(); } /** *卸载当前的软件设备管理数据特殊应用所以不能普通卸载 */ publicvoiduninstall(Viewview){ //1.先清除管理员权限 ComponentNamewho=newComponentName(this, MyAdmin.class); dpm.removeActiveAdmin(who); //2.普通应用的卸载 Intentintent=newIntent(); intent.setAction("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.setData(Uri.parse("package:"+getPackageName())); startActivity(intent); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。