Android鎖屏和啟用裝置管理器

我叫阿狸貓發表於2014-07-16
/**
 * 
 * 裝置管理器的建立步驟:
 * 1.建立一個類實現DeviceAdminReceiver
 * 2.在清單檔案中註冊這個廣播接收者
 *  <receiver
 *       android:name="com.xxc.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>
 *  3.在res目錄下建立一個xml資料夾,在xml資料夾下建立device_admin_sample.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>
 */
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);
	}
	
	public void lockScreen(View view){
		ComponentName who = new ComponentName(this, MyAdmin.class);
		if(dpm.isAdminActive(who)){
			dpm.lockNow();
			dpm.resetPassword("", 0);//設定鎖屏密碼    第一個引數:密碼,空字串則表示取消密碼  第二個引數:寫0就行
			//dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);//清除SD卡內容
			//dpm.wipeData(0);//恢復出廠設定
		}else{
			Toast.makeText(getApplicationContext(), "請先啟用裝置管理器", Toast.LENGTH_SHORT).show();
		}
		
	}

	/**
	 * 4.直接跳轉到啟用裝置管理器頁面 
	 */
	public void open(View view){
		//建立一個新增裝置管理的意圖
        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        //啟用哪個裝置管理器
        ComponentName mDeviceAdminSample = new ComponentName(this, MyAdmin.class);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);
        //開啟裝置管理器時的提示資訊
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "開啟後可一鍵鎖屏...");
        startActivity(intent);
	}
	
	/**
	 * 解除安裝這個註冊成裝置管理器的APP
	 */
	public void uninstall(View view){
		//1.先取消裝置管理器的啟用狀態
		ComponentName mDeviceAdminSample = new ComponentName(this, MyAdmin.class);
		dpm.removeActiveAdmin(mDeviceAdminSample);
		//2.解除安裝APP
		Intent intent = new Intent();
		intent.setAction("android.intent.action.VIEW");
		intent.addCategory("android.intent.category.DEFAULT");
		intent.setData(Uri.parse("package:"+getPackageName()));
		startActivity(intent);
	}
}



/**
 * 一個特殊的廣播接收者
 * @author Administrator
 *
 */
public class MyAdmin extends DeviceAdminReceiver {

}


string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">一鍵鎖屏</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="sample_device_admin_description">裝置管理器的描述資訊</string>
    <string name="sample_device_admin">裝置管理器的標籤(描述資訊的簡化)</string>
</resources>




相關文章