轻松实现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);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。