Android 장치 관리자의 일부 작업 및 사용 권한 설정 정보
6557 단어 안드로이드 지식
<uses-permission android:name="android.permission.DEVICE_POWER" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<uses-permission android:name="android.permission.USES_POLICY_FORCE_LOCK" />
그 다음으로 우리는 정적 방송을 만들고 등록해야 한다
<receiver android:name=".ScreenOffAdminReceiver"
android:label="@string/app_name"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
intent-filter>
receiver>
위의 deviceadmin 파일의 내용은 다음과 같습니다.
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<force-lock />
uses-policies>
device-admin>
사실 여기 에는 또 다른 많은 권한 을 추가할 수 있지만, 우리 는 상기 설정 이 완성된 후, 우리 는 스크린 코드 를 호출할 수 있다
DevicePolicyManager mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
mDPM.lockNow();
그러나 코드를 실행한 후에 우리는 화면을 닫을 수 없다는 것을 발견했다. 왜 그런가?응용 프로그램의 장치 관리 권한을 열어야 하기 때문입니다.이 옵션은 일반적으로 시스템이 설정한 안전 옵션의 장치 관리자에서 우리의 응용 프로그램을 선택해야 한다. 그러면 우리는 순조롭게 화면을 닫을 수 있다.물론 화면을 깨우는 것도 쉽다. 코드는 다음과 같다.
PowerManager mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock mWakeLock = mPowerManager
.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");
mWakeLock.acquire();
mWakeLock.release();
물론 당신의 응용 프로그램이 나처럼 시스템 응용 프로그램이라면 우리는 관련 코드를 직접 호출하여 장치 관리 권한을 직접 열 수 있습니다. 코드는 다음과 같습니다.
ComponentName componentName = new ComponentName(" "," ( , )");
try {
DevicePolicyManager mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
Method setActiveAdmin = mDPM.getClass().getDeclaredMethod("setActiveAdmin", ComponentName.class, boolean.class);
setActiveAdmin.setAccessible(true);
setActiveAdmin.invoke(mDPM, componentName, true);
} catch (Exception e) {
}
여기에서 반사를 사용하는 이유는 DevicePolicy Manager의 setactive Admin 방법이 hideapi에 속하기 때문입니다.따라서 우리는 반사 호출을 취할 수밖에 없다. (만약 당신의 운영체제가 안드로이드 9.0이라면 반사 호출 시스템 API는 순조롭게 실행될 수 없을 것이다. 그러나 이 메커니즘이 시스템에 적용되는지 당분간 알 수 없다. 물론 돌아가는 방식도 매우 많다. 특히 이런 public이지만 hide의api에 대해서도)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 장치 관리자의 일부 작업 및 사용 권한 설정 정보이 목적을 간단명료하게 말하자면, 우리의 설비가 장기간 햇빛에 노출되어 장시간의 운행으로 인해 설비의 온도가 너무 높아서 설비의 운행이 중단되었다.그래서 우리는 온도가 한도값보다 높을 때 화면을 닫아서 온도를 낮추는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.