您的位置:首页 > 移动开发 > Android开发

Android一键锁屏和清除数据代码实现

2015-04-02 11:04 232 查看
android 2.2引入了支持企业应用程序提供Android设备管理API。设备管理API提供了设备管理功能在系统级别。管理员也可以远程擦(即恢复工厂默认值)丢失或被盗的手机。

但对于实现这些功能需要引入设备超级管理员(device admin),具体2、看文档 Develop-->API Guides--->Administration

下面我们看实现:

首先创建MyAdmin类,继承DeviceAdminReceiver

自己无需实现任何东西

AndroidManifest.xml配置这个接收器

<receiver
            android:name="com.example.lockscreen.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>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>
        </receiver>
name填写自己类路径,此时sample_device_admin等会报错,我们需要在String.xml中说明

<string name="sample_device_admin_description">我是设备超级管理员,开启我后我可以锁屏。</string>
<string name="sample_device_admin">一键锁屏设置</string>


java主方法实现

先声明DevicePolicyManager,包名import android.app.admin.DevicePolicyManager;真实代码为例

package com.example.lockscreen;

import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {
private DevicePolicyManager dpm;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);

}
/**
* 开启设备管理员
* @param view
*/
public void openAdmin(View view ){
//声明一个意图,作用是开启设备的超级管理员
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
ComponentName cn = new ComponentName(this, MyAdmin.class);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, cn);
//劝说用户开启管理员
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
"开启我把。开启我就可以锁屏了,开启送积分");
startActivity(intent);
}

/**
* 锁屏
* @param view
*/
public void click(View view){
ComponentName cn = new ComponentName(this, MyAdmin.class);
if(dpm.isAdminActive(cn)){
//设备管理员的api
dpm.resetPassword("123", 0);
dpm.lockNow();
//			dpm.wipeData(0);
//			dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);//删除sdcard数据
}else{
//			openAdmin(null);
Toast.makeText(this, "请先激活管理员", 0).show();
}

}

/**
* 卸载
* @param view
*/
public void uninstall(View view){
ComponentName cn = new ComponentName(this, MyAdmin.class);
//可以移除管理员
dpm.removeActiveAdmin(cn);
Intent intent = new Intent();
intent.setAction("android.intent.action.UNINSTALL_PACKAGE");
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse("package:"+getPackageName()));
startActivity(intent);

}

}


最后,前台xml中<Button的onclick属性配置方法名就可以调用了。

<Button
android:onClick="openAdmin"
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开启超级管理员" />

<Button
android:onClick="click"
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="卸载" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: