让一个运用成为管理员运用

    如果你想让你的运用具有系统的许多特殊的功能,比如锁屏,重置密码,恢复出厂设置,等等

那么,你应该怎么做呢?

 

在保持你代码尽量不变的情况下,你需要为你的运用注册管理员权限,那么你你应该怎么做呢

1.新建一个类,继承与DeviceAdminReceiver,逻辑可以什么都不写,类的名字也是随意的,例如:

package com.example.androidtest;

import android.app.admin.DeviceAdminReceiver;
import android.app.admin.DevicePolicyManager;

public class MyAdmin extends DeviceAdminReceiver {

}

2.因为DeviceAdminReceiver是BroadcastReceiver的子类,因此他是android的组件,所以需要在清单文件配置: <receiver android:name="com.example.androidtest.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>

又因为系统在跑动时,需要xml/my_admi的配置文件,所以,还需要在res/xml文件夹 下新建一个名为:my_admi.xml

<device-admin xmlns: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>

 

3.配置完毕后,在你要使用这项系统服(锁屏,重置密码,恢复出厂设置,等等)务的页面加上如下代码:

DevicePolicyManager manager  = (DevicePolicyManager) this.getSystemService(this.DEVICE_POLICY_SERVICE);
        
        ComponentName mAdminName = new ComponentName(this,MyAdmin.class);
        if(!manager.isAdminActive(mAdminName))
        {
            Intent intent = new Intent(
                    DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName);
            startActivity(intent);
        }

4.这样就可以在我们的运用中尽情的使用manager 来执行这项服务了

  比如:

           manager.resetPassword("123456789", 0);//修改密码
           manager.lockNow();//锁屏

           manager.wipeData(0);//恢复出厂设置

 

 

 

posted @ 2013-10-11 14:54  幽幽他爸  阅读(236)  评论(0编辑  收藏  举报