转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47010177
把应用程序升级为拥有系统管理员权限。写一个广播接收者,给该广播接收者去申请系统管理员的权限,让操作系统给广播接收者授权。(激活系统的授权组件)。在此,本人主要通过申请应用系统管理员权限,锁屏,设置密码,恢复出厂设置几个方面来简单介绍Android中如何给一个应用申请系统管理员的权限操作。其中,这些主要的功能都是通过Android提供的一个类来完成的,这个类就是DevicePolicyManager,有关这个类的详细说明,大家可以参考Android的官方文档,在此,我就不过多阐述了。下面,我们一起来看看如何实现这些功能呢?
1、创建my_admin.xml文件
在Android工程的res目录下新建xml目录,在xml目录下新建my_admin.xml文件
具体实现如下:
<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
</uses-policies>
</device-admin>
这个文件中主要定义了一些要获取的系统管理员权限
2、创建布局文件
这个布局文件中有一个按钮,在按钮的onClick事件中实现相应的功能
具体实现如下:
<RelativeLayout xmlns: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=".MainActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="锁屏" />
</RelativeLayout>
3、定义广播接收者MyAdmin
这个类不同于普通的广播接收者,它需要继承DeviceAdminReceiver,有关DeviceAdminReceiver的详细说明,大家可以参考Android的官方文档。
具体实现如下
package com.lyz.local.screen.activity;
import android.app.admin.DeviceAdminReceiver;
/**
* 广播接收者
* @author liuyazhuang
*
*/
public class MyAdmin extends DeviceAdminReceiver {
}
4、完善MainActivity
在这个类中,主要实现了页面按钮的点击事件,在这个点击事件中,通过DevicePolicyManager类实现相应的操作
具体代码如下:
package com.lyz.local.screen.activity;
import android.os.Bundle;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
/**
* 程序入口
* @author liuyazhuang
*
*/
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onClick(View v){
//获取系统管理权限
DevicePolicyManager devicePolicyManager = (DevicePolicyManager) this.getSystemService(Context.DEVICE_POLICY_SERVICE);
//申请权限
ComponentName componentName = new ComponentName(this, MyAdmin.class);
//判断该组件是否有系统管理员的权限
boolean isAdminActive = devicePolicyManager.isAdminActive(componentName);
if(isAdminActive){
//锁屏
devicePolicyManager.lockNow();
//重置密码
devicePolicyManager.resetPassword("123", 0);
//恢复出厂设置(建议不要真机测试)
devicePolicyManager.wipeData(0);
}else{
Intent intent = new Intent();
//指定动作
intent.setAction(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
//指定给哪个组件授权
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
startActivity(intent);
}
}
}
5、注册BroadReceiver
最后不要忘了在AndroidManifest.xml中注册BroadReceiver
具体实现如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lyz.local.screen.activity"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.lyz.local.screen.activity.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".MyAdmin">
<meta-data android:name="android.app.device_admin"
android:resource="@xml/my_admin" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
</application>
</manifest>
6、运行效果
1、展示应用授权管理员权限
2、点击锁屏
3、输入密码
4、卸载应用出现的问题即解决方法
温馨提示:大家可以到链接http://download.csdn.net/detail/l1028386804/8924361获取完整Android示例代码