Androidはデバイスマネージャで管理者になって画面をロックします
4512 ワード
ほとんどの場合、DevicePolicyManagerでDEVICEを取得することができます.POLICY_SERVICEサービスは、startActivityでアクティブ化されます.しかし、このような弊害は、deviceAdminインタフェースから飛び出してアクティブにすることです.
今日はstartActivityで管理者をアクティブにしない方法を共有しますが、システム権限が必要であることが前提です.
1、まずDevicePolicyManagerサービスを取得し、ComponentNameを作成する.
2、AndroidManifest.xmlにラベルを追加
res/xmlにlock_を追加screen.xmlファイルの内容は次のとおりです.
3、最后にシステムhideタイプのインタフェースsetActiveAdminを呼び出して管理者をアクティブにします.この时、デバイスを操作して、ロック画面のパスワードを制御することができます.
今日はstartActivityで管理者をアクティブにしない方法を共有しますが、システム権限が必要であることが前提です.
1、まずDevicePolicyManagerサービスを取得し、ComponentNameを作成する.
mDpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
mComponentName = new ComponentName(mContext, XXX.class);
2、AndroidManifest.xmlにラベルを追加
<receiver android:name="XXXXXX"
android:label="@string/app_name"
android:description="@string/app_name"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin"
android:resource="@xml/lock_screen" />
<intent-filter>
<action
android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
intent-filter>
receiver>
res/xmlにlock_を追加screen.xmlファイルの内容は次のとおりです.
<device-admin
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<force-lock />
<wipe-data />
<reset-password />
<limit-password />
<watch-login />
uses-policies>
device-admin>
3、最后にシステムhideタイプのインタフェースsetActiveAdminを呼び出して管理者をアクティブにします.この时、デバイスを操作して、ロック画面のパスワードを制御することができます.
private void lockScreen(String passWord){
boolean bActive = mDpm.isAdminActive(mComponentName);
if (bActive) {
mDpm.resetPassword(passWord, 0);
mDpm.lockNow();
} else {
setActiveAdmin();
mDpm.resetPassword(passWord, 0);
mDpm.lockNow();
}
}
private void setActiveAdmin() {
try {
mDpm.setActiveAdmin(mComponentName, true);
} catch (RuntimeException e) {
// Something bad happened... could be that it was
// already set, though.
Log.w(TAG, "Exception trying to activate admin "
+ mComponentName, e);
}
}