歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 激活Deviceadmin,並進行鎖屏和恢復出廠設置

Android 激活Deviceadmin,並進行鎖屏和恢復出廠設置

日期:2017/3/1 10:16:52   编辑:Linux編程

Android手機一般不用時,都會通過電源鍵來鎖定屏幕同時關閉屏幕燈。

其實從API Level 8 (也就是Android 2.2) 開始, Android提供了DevicePolicyManager類, 可以讓你的應用程序也能執行屏幕鎖定等操作。

鎖定效果:

要讓自己的應用實現該屏幕鎖定,主要需要用到以下幾個類:DevicePolicyManager
這是設備管理的主類。通過它可以實現屏幕鎖定、屏幕亮度調節、出廠設置等功能。

DeviceAdminReceiver
該類繼承自 BroadcastReceiver 。 從源碼可以看到,其實就是實現了一個OnReceive方法,該方法中根據不同的Action,執行相應的操作。 比如,如果激活成功,那麼Action就是ACTION_DEVICE_ADMIN_ENABLED, 據此調用 onEnabled 方法。

系統源碼:

/**

* Intercept standard device administrator broadcasts. Implementations

* should not override this method; it is better to implement the

* convenience callbacks for each action.

*/

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if (ACTION_PASSWORD_CHANGED.equals(action)) {

onPasswordChanged(context, intent);

} else if (ACTION_PASSWORD_FAILED.equals(action)) {

onPasswordFailed(context, intent);

} else if (ACTION_PASSWORD_SUCCEEDED.equals(action)) {

onPasswordSucceeded(context, intent);

} else if (ACTION_DEVICE_ADMIN_ENABLED.equals(action)) {

onEnabled(context, intent);

} else if (ACTION_DEVICE_ADMIN_DISABLE_REQUESTED.equals(action)) {

CharSequence res = onDisableRequested(context, intent);

if (res != null) {

Bundle extras = getResultExtras(true);

extras.putCharSequence(EXTRA_DISABLE_WARNING, res);

}

} else if (ACTION_DEVICE_ADMIN_DISABLED.equals(action)) {

onDisabled(context, intent);

}

}

具體中的簡單引用:

屏幕鎖定和恢復出廠設置

1.創建 MyAdmin 的廣播接受者 繼承 DeviceAdminReceiver


<receiver android:name=".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>


my_admin.xml

<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
</uses-policies>
</device-admin>

2.獲取IDevicePolicyManager

DevicePolicyManager dm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);


3.注冊廣播接受者為admin設備

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

}


4.點擊事件中進行鎖屏或者清零數據處理

public void lock(View view){
dm.resetPassword("123", 0); //滑動解鎖屏幕條後需要輸入密碼(方法中新設置的密碼)才能真正解鎖
dm.lockNow();

//恢復出廠設置.
//dm.wipeData(0);
}

Copyright © Linux教程網 All Rights Reserved