// 啟動設備管理(隱式Intent) - 在AndroidManifest.xml中設定相應過濾器 Intent intents = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); // 權限列表 intents.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName); // 描述(additional explanation) intents.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "------ 其他描述 ------"); startActivityForResult(intents, 0); }
二、可以遠程對設備做哪些操作
要先獲得DevicePolicyManager實例才可以進行控制操作
DevicePolicyManager mDPM = (DevicePolicyManager) mContext .getSystemService(Context.DEVICE_POLICY_SERVICE);
1、控制鎖屏
mDPM.lockNow();
2、控制攝像機的使用
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public int setCameraDisabled(boolean disableCamera) {
if (isDeviceAdminActive()) {
if (API_LEVEL < 14) {
return ERROR_UNSUPPORTED;
}
mDPM.setCameraDisabled(mDeviceAdminSample, disableCamera);
return 0;
} else {
//
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
public boolean getCameraDisabled() {
if (isDeviceAdminActive()) {
if (API_LEVEL < 14) {
return false;
}
return mDPM.getCameraDisabled(mDeviceAdminSample);
} else {
//
activateDeviceAdmin();
return false;
}
}
3、控制密碼
public int resetPasswd(String newPasswd) {
if (isDeviceAdminActive()) {
boolean succeed = mDPM.resetPassword(newPasswd,
DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
if (succeed) {
return 0;
} else {
return ERROR_PASSWD_QUALITY;
}
} else {
// 激活時間與用戶的操作有關,所以不等待,直接返回操作失敗
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
public int setPasswdQuality(int value) {
if (isDeviceAdminActive()) {
if (API_LEVEL < 11) {
return ERROR_UNSUPPORTED;
}
mDPM.setPasswordQuality(mDeviceAdminSample, value);
return 0;
} else {
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
public String getPasswordQuality() {
if (isDeviceAdminActive()) {
int quality = mDPM.getPasswordQuality(mDeviceAdminSample);
switch (quality) {
case DevicePolicyManager.PASSWORD_QUALITY_BIOMETRIC_WEAK:
return "圖案";
case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
return "數字";
case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
return "字母";
case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
return "數字和字母";
default:
return "其它";
}
} else {
activateDeviceAdmin();
return "未知";
}
}
public int setPasswordMinimumLength(int value) {
if (isDeviceAdminActive()) {
mDPM.setPasswordMinimumLength(mDeviceAdminSample, value);
return 0;
} else {
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
/*
* -1無法獲取
*/
public int getPasswordMinimumLength() {
if (isDeviceAdminActive()) {
return mDPM.getPasswordMinimumLength(mDeviceAdminSample);
} else {
activateDeviceAdmin();
return -1;
}
}
// TODO: 2017-2-7 策略信息中並沒有該項
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public int setPasswordMinimumLetters(int value) {
if (isDeviceAdminActive()) {
if (API_LEVEL < 11) {
return ERROR_UNSUPPORTED;
}
mDPM.setPasswordMinimumLetters(mDeviceAdminSample, value);
return 0;
} else {
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public int setPasswordMinimumNumeric(int value) {
if (isDeviceAdminActive()) {
if (API_LEVEL < 11) {
return ERROR_UNSUPPORTED;
}
mDPM.setPasswordMinimumNumeric(mDeviceAdminSample, value);
return 0;
} else {
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public int setPasswordMinimumLowerCase(int value) {
if (isDeviceAdminActive()) {
if (API_LEVEL < 11) {
return ERROR_UNSUPPORTED;
}
mDPM.setPasswordMinimumLowerCase(mDeviceAdminSample, value);
return 0;
} else {
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public int setPasswordMinimumUpperCase(int value) {
if (isDeviceAdminActive()) {
if (API_LEVEL < 11) {
return ERROR_UNSUPPORTED;
}
mDPM.setPasswordMinimumUpperCase(mDeviceAdminSample, value);
return 0;
} else {
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public int setPasswordMinimumSymbols(int value) {
if (isDeviceAdminActive()) {
if (API_LEVEL < 11) {
return ERROR_UNSUPPORTED;
}
mDPM.setPasswordMinimumSymbols(mDeviceAdminSample, value);
return 0;
} else {
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
/*
* -1無法獲取
*/
public int getPasswordMinimumSymbols() {
if (isDeviceAdminActive()) {
return mDPM.getPasswordMinimumSymbols(mDeviceAdminSample);
} else {
activateDeviceAdmin();
return -1;
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public int setPasswordMinimumNonLetter(int value) {
if (isDeviceAdminActive()) {
if (API_LEVEL < 11) {
return ERROR_UNSUPPORTED;
}
mDPM.setPasswordMinimumNonLetter(mDeviceAdminSample, value);
return 0;
} else {
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public int setPasswordHistoryLength(int value) {
if (isDeviceAdminActive()) {
if (API_LEVEL < 11) {
return ERROR_UNSUPPORTED;
}
mDPM.setPasswordHistoryLength(mDeviceAdminSample, value);
return 0;
} else {
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
/*
* -1無法獲取
*/
public int getPasswordHistoryLength() {
if (isDeviceAdminActive()) {
return mDPM.getPasswordHistoryLength(mDeviceAdminSample);
} else {
activateDeviceAdmin();
return -1;
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public int setPasswordExpirationTimeout(int value) {
if (isDeviceAdminActive()) {
if (API_LEVEL < 11) {
return ERROR_UNSUPPORTED;
}
mDPM.setPasswordExpirationTimeout(mDeviceAdminSample, value
* MS_PER_DAY);
return 0;
} else {
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
/*
* -1無法獲取
*/
public long getPasswordExpirationTimeout() {
if (isDeviceAdminActive()) {
long ret = mDPM.getPasswordExpirationTimeout(mDeviceAdminSample);
return ret / MS_PER_DAY;
} else {
activateDeviceAdmin();
return -1;
}
}
4、控制藍牙
// 打開、關閉藍牙
public int setBluetoothState(boolean enable) {
BluetoothAdapter bluetoothAdapter = BluetoothAdapter
.getDefaultAdapter();
if (bluetoothAdapter == null) {
return ERROR_UNSUPPORTED;
}
if (enable) {
bluetoothAdapter.enable();
} else {
bluetoothAdapter.disable();
}
return 0;
}
5、WIFI控制相關
public int getWifiState() {
android.net.wifi.WifiManager wifiManager = (android.net.wifi.WifiManager) mContext
.getSystemService(Context.WIFI_SERVICE);
return wifiManager.getWifiState();
}
// 打開、關閉wifi
public void setWifiState(boolean enable) {
android.net.wifi.WifiManager wifiManager = (android.net.wifi.WifiManager) mContext
.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(enable);
}
// 打開、關閉wifi
public void disconnectWifi() {
android.net.wifi.WifiManager wifiManager = (android.net.wifi.WifiManager) mContext
.getSystemService(Context.WIFI_SERVICE);
wifiManager.getConnectionInfo().getNetworkId();
WifiAdmin wifiAdmin = new WifiAdmin(mContext);
wifiAdmin.disconnectWifi(wifiManager.getConnectionInfo().getNetworkId());
//wifiManager.disconnect();
}
6、設置靜音
// 設置靜音
public int setMute(boolean setMute) {
if (setMute) {
AudioManager audioManager = (AudioManager) mContext
.getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0); // mute
// music
// stream
audioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0); // mute
// ring
// stream
if (Build.VERSION.SDK_INT >= 8) {
audioManager.requestAudioFocus(null, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN);
audioManager.requestAudioFocus(null, AudioManager.STREAM_RING,
AudioManager.AUDIOFOCUS_GAIN);
}
} else {
AudioManager audioManager = (AudioManager) mContext
.getSystemService(Context.AUDIO_SERVICE);
int maxMusic = audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
audioManager
.setStreamVolume(AudioManager.STREAM_MUSIC, maxMusic, 0); // mute
// music
// stream
int maxRing = audioManager
.getStreamMaxVolume(AudioManager.STREAM_RING);
audioManager.setStreamVolume(AudioManager.STREAM_RING, maxRing, 0); // mute
// ring
// stream
if (Build.VERSION.SDK_INT >= 8) {
audioManager.requestAudioFocus(null, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN);
audioManager.requestAudioFocus(null, AudioManager.STREAM_RING,
AudioManager.AUDIOFOCUS_GAIN);
}
}
return 0;
}
7、恢復出廠設置
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
public int wipeData(boolean withExternalStorage) {
if (isDeviceAdminActive()) {
if (API_LEVEL >= 9) {
// mDPM.wipeData(withExternalStorage ? DevicePolicyManager.WIPE_EXTERNAL_STORAGE
// : 0);
mDPM.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);
} else {
// WIPE_EXTERNAL_STORAGE is not supported under API level 9
mDPM.wipeData(0);
}
return 0;
} else {
activateDeviceAdmin();
return ERROR_UNACTIVATED;
}
}
要想實現更多的管理服務得去不同廠家申請了,比如申請加入APP白名單的接口,wifi黑白名單的各種黑操作之類的。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/218883.html
微信掃一掃
支付寶掃一掃