添加当前程序到设备管理列表里
2016-06-01 17:50
295 查看
1、权限配置
详细请参考Device Administration以及DeviceAdminReceiver的相关文档
根据sdk文档,说明,先创建Androidmanifest.xml,它必须包含如下信息
子类(继承自DeviceAdminReceiver)需要包含以下两点:
必须拥有BIND_DEVICE_ADMIN
能处理ACTION_DEVICE_ADMIN_ENABLED的intent请求,并在xml中声明为一个intent
在metadata中进行安全声明
下面是一个manifest例子
2、代码部分,创建继承子类MyDeviceAdminReceiver
3、编写添加进入设备的代码
详细请参考Device Administration以及DeviceAdminReceiver的相关文档
根据sdk文档,说明,先创建Androidmanifest.xml,它必须包含如下信息
子类(继承自DeviceAdminReceiver)需要包含以下两点:
必须拥有BIND_DEVICE_ADMIN
能处理ACTION_DEVICE_ADMIN_ENABLED的intent请求,并在xml中声明为一个intent
在metadata中进行安全声明
下面是一个manifest例子
<receiver android:name=".myDeviceAdminReceiver" android:permission="android.permission.BIND_DEVICE_ADMIN" > <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin_sample" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver>
a) meta-data项是必须的,还有权限以及intent-filter b) android:resource对应的xml需要自己创建,并放在xml目录下,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>
2、代码部分,创建继承子类MyDeviceAdminReceiver
public class myDeviceAdminReceiver extends DeviceAdminReceiver{ private static String TAG = "TestHello"; @Override public void onEnabled(Context context, Intent intent) { // TODO Auto-generated method stub super.onEnabled(context, intent); Toast.makeText(context, context.getResources().getString(R.string.device_admin_jihuo_success_tips), Toast.LENGTH_LONG).show();; Log.i(TAG, "DeviceAdminReceiver::onEnabled"); } @Override public CharSequence onDisableRequested(Context context, Intent intent) { // TODO Auto-generated method stub //这里如果返回的字符串不为空,那么当用户去设置里取消时,则会提示带此文字的确定框 String strResult = "请不要取消,谢谢!!!"; Log.i(TAG, "DeviceAdminReceiver::onDisableRequested"); //return super.onDisableRequested(context, intent); return strResult; } @Override public void onDisabled(Context context, Intent intent) { // TODO Auto-generated method stub super.onDisabled(context, intent); Log.i(TAG, "DeviceAdminReceiver::onDisable"); Toast.makeText(context, context.getResources().getString(R.string.device_admin_cancel_jihuo_tips), Toast.LENGTH_LONG).show();; } @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub super.onReceive(context, intent); Log.i(TAG, "DeviceAdminReceiver::onReceive"); } }
3、编写添加进入设备的代码
public void OpenDevicePolicyManager(Context context) { DevicePolicyManager dManager = (DevicePolicyManager) context.getSystemService("device_policy");//获取manager对象 ComponentName localComponentName = new ComponentName(this, myDeviceAdminReceiver.class); if (dManager != null && localComponentName != null && false == dManager.isAdminActive(localComponentName)) { Intent localIntent = new Intent(dManager.ACTION_ADD_DEVICE_ADMIN); localIntent.putExtra(dManager.EXTRA_DEVICE_ADMIN, localComponentName); localIntent.putExtra(dManager.EXTRA_ADD_EXPLANATION, context.getResources().getString(R.string.device_admin_explanation)); startActivityForResult(localIntent, ActivityResult); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub //用于判断是否startActivity成功,需要xml中的配置权限才能设置成功 super.onActivityResult(requestCode, resultCode, data); Log.i(TAG, "onActivityResult,resultCode:"+resultCode); if (-1 == resultCode) { Toast.makeText(this, this.getResources().getString(R.string.device_admin_jihuo_success_tips), Toast.LENGTH_LONG).show();; } else { Toast.makeText(this, this.getResources().getString(R.string.device_admin_jihuo_failed_tips), Toast.LENGTH_LONG).show();; } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories