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="卸载" />
时间: 2024-10-11 00:35:47