標籤:android一鍵鎖屏 清除資料
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;@Overrideprotected 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)){//裝置管理員的apidpm.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="卸載" />
Android一鍵鎖屏和清除資料代碼實現