Android註冊裝置管理器(獲取超級管理員許可權)
注意:一旦一個應用開啟了超級管理員許可權,是不能直接在 設定--->應用程式裡 進行刪除的(刪除失敗)
必須要在 設定--->位置和安全--->選擇裝置管理器 裡取消要刪除應用的啟用 然後再去應用程式裡刪除
1.建立一個DeviceAdminReceiver子類(DeviceAdminReceiver是廣播接收者的子類)
import android.app.admin.DeviceAdminReceiver;
public class MyAdmin extends DeviceAdminReceiver {
}
2.配置廣播接收者清單檔案
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxc.lockscreen"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.xxc.lockscreen.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<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" ><!-- description和label都是strings.xml裡配置的 -->
<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>
</application>
</manifest>
values目錄下的strings.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>
3.在res目錄下建立xml資料夾,再此資料夾裡建立device_admin_sample.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>
4.在Activity裡呼叫
package com.xxc.lockscreen;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.ComponentInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
/**
* 步驟:
* 1.建立一個類繼承DeviceAdminReceiver
* 2.因為DeviceAdminReceiver是一個廣播接收者,那麼就需要在清單檔案裡配置receiver
* <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" /> //在res下建立xml資料夾,並建立device_admin_sample.xml檔案
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
*3.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>
*
*4.設定--->裝置管理器--->將鎖屏程式勾選啟用
*
*5.而讓一般的使用者手動執行第四步會感覺很繁瑣,所以在介面上加一個CheckBox元件,直接完成第四步的操作
*/
public class MainActivity extends Activity {
private DevicePolicyManager dpm;
private CheckBox cb_status;
private ComponentName mDeviceAdminSample;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);//裝置策略管理器
cb_status = (CheckBox) findViewById(R.id.cb_status);//核取方塊元件
//第一個引數 上下文 第二個引數 需要被啟用的超級管理員類
mDeviceAdminSample = new ComponentName(getApplicationContext(), MyAdmin.class);
isOpen();//判斷是否啟用,再進行對應的資料回顯
cb_status.setOnCheckedChangeListener(new OnCheckedChangeListener() {//多選框勾選狀態改變的監聽器
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//以下這段都是API上覆制的
if(isChecked){//多選框被勾選,啟用超級管理員
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"開啟後就可以使用鎖屏功能了...");//顯示位置見圖二
/*
* 不能直接startActivity 因為可能在啟用的時候使用者點選了取消,這時候CheckBox狀態是勾選的,但是實際是沒啟用的,
* 所以要等開啟的Activity關閉後的回撥函式裡去判斷是否真正啟用,再對CheckBox狀態進行改變
*/
startActivityForResult(intent, 0);
}else{//多選框取消勾選,取消啟用超級管理員
dpm.removeActiveAdmin(mDeviceAdminSample);
}
}
});
}
/**
* 關閉啟用Activity後的回撥函式
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
isOpen();
}
/**
* 檢測使用者是否開啟了超級管理員
*/
private void isOpen() {
if(dpm.isAdminActive(mDeviceAdminSample)){//判斷超級管理員是否啟用
cb_status.setChecked(true);
}else{
cb_status.setChecked(false);
}
}
public void screenLock(View view){
dpm.lockNow();//鎖屏
}
}
圖一:
圖二:
相關文章
- win10管理員許可權怎麼獲取 win10管理員許可權獲取的方法Win10
- 如何獲取最高管理員許可權 win10教育版最高管理員許可權Win10
- win10怎麼獲得管理員許可權_win10獲取管理員許可權的步驟Win10
- win10管理員許可權獲取不了怎麼辦 win10管理員許可權獲取失敗解決方法Win10
- win10取得管理員許可權怎麼獲取 win10計算機管理員許可權獲得方法Win10計算機
- Android手機獲取Root許可權Android
- win10管理員許可權如何獲取 win10怎樣讓當前使用者獲得管理員許可權Win10
- 可獲取管理員許可權,聯想公佈兩個特權提升漏洞
- HIVE的許可權控制和超級管理員的實現Hive
- Gate 超級管理員擁有全部許可權踩坑點
- w10如何獲得管理員許可權_win10怎麼取得管理員許可權Win10
- win10怎麼獲取管理員許可權_win10讓當前使用者獲得管理員許可權的步驟Win10
- 取消 root 級管理員的 root 許可權
- win10管理員賬戶無許可權怎麼辦 win10是管理員但是沒有許可權如何獲取Win10
- win10管理員許可權怎麼獲取 win10系統啟動管理許可權的辦法Win10
- win10獲得電腦管理員許可權怎麼操作 win10怎樣獲得管理員許可權Win10
- win10系統下怎麼獲取administrator管理員許可權Win10
- 只需一個小bug,就可獲取facebook頁面的管理員許可權
- 1.6.1. 管理員許可權
- Confluence6對比系統管理員許可權和Confluence管理員許可權
- 從活動目錄獲取域管理員許可權的各種姿勢
- Android破取某漫畫app獲得VIP許可權AndroidAPP
- w10內建管理員賬戶沒許可權如何獲取_w10獲取內建管理員賬戶操作方法
- Android 採用AOP方式封裝6.0許可權管理Android封裝
- win10 用管理員許可權開啟資源管理器 重新命名Win10
- win10管理員許可權怎麼取消_win10如何關掉管理員許可權Win10
- QNAP升級漏洞可致攻擊者獲得管理員許可權並注入惡意程式碼
- Android6.0------許可權申請管理(單個許可權和多個許可權申請)Android
- win10如何獲得trustedinstaller許可權_win10獲取trustedinstaller許可權方法Win10Rust
- win10無管理員許可權怎麼安裝軟體 win10安裝軟體提示沒有管理員許可權解決方法Win10
- win10 管理員許可權授權怎麼關掉 win10電腦管理員許可權怎麼解除Win10
- jenkins原理篇——成員許可權管理Jenkins
- win10許可權管理解除方法 win10怎麼解除管理員許可權Win10
- win10管理員許可權不足怎麼設定_win10管理員許可權不足如何解決Win10
- 資料夾刪不掉需要管理員許可權怎麼辦 刪除需要管理員許可權的辦法
- win10如何獲得管理員許可權詳細操作步驟Win10
- Android SELinux許可權AndroidLinux
- Android 通知許可權Android
- Ubuntu16.04不用管理員許可權安裝caffe依賴(上)Ubuntu