Android中设备管理员的用途是什么?

Amo*_*kar 3 android administrator device

我对设备管理员api存有疑问/疑问,可以使用密码通过此API限制我的应用程序不被取消安装。

请告诉我设备管理员api的功能是什么?如何在应用程序中使用它们?以及我如何决定需要设置哪些策略?

请在这种混乱中帮助我。

Nik*_*hil 5

设备管理器API是在系统级别提供设备管理功能的API。这些API允许您创建安全意识的应用程序。它用于使您的应用程序在屏幕锁定时从设备上卸载或通过使用摄像头捕获图片。

设备管理API支持以下策略:
1.)启用密码-要求设备要求输入PIN或密码。

2.)最小密码长度-设置密码所需的字符数。例如,您可以要求PIN或密码至少包含六个字符。

3.)需要字母数字密码-要求密码包含字母和数字的组合。它们可能包含符号字符。

4.)需要复杂的密码-要求密码必须至少包含一个字母,一个数字和一个特殊符号。介绍了Android 3.0的。

5.)密码中要求的最少字母-所有管理员或特定管理员密码中要求的最少字母。介绍了Android 3.0的。

6.)密码中要求的最小小写字母-所有管理员或特定管理员密码中要求的最小小写字母数量。介绍了Android 3.0的。

7.)密码过期超时-密码过期时,表示为从设备管理员设置过期超时起的毫秒数。介绍了Android 3.0的。

8.)最大尝试失败密码次数-指定用户在设备擦除其数据之前可以输入错误密码的次数。设备管理API还允许管理员将设备远程重置为出厂默认值。如果设备丢失或被盗,这可以保护数据。

9.)最大不活动时间锁定-设置自用户最后一次触摸屏幕或在设备锁定屏幕之前按下按钮以来的时间长度。发生这种情况时,用户需要再次输入其PIN或密码,然后才能使用其设备并访问数据。该值可以在1到60分钟之间。

10.)禁用摄像机-指定应禁用摄像机。请注意,这并不一定要永久禁用。可以根据上下文,时间等动态启用/禁用摄像机。介绍了Android 4.0的。

要在您的应用程序中使用此设备管理器,应使用以下代码。您只需要将此类添加到您的项目中。

public class MyDeviceAdminReceiver extends DeviceAdminReceiver {

private static final int CAMERA_REQUEST = 1888;
private SurfaceView sv;
private boolean safeToTakePicture = false;
private int count = 0;

/**
 * method to show toast
 *
 * @param context the application context on which the toast has to be displayed
 * @param msg     the message which will be displayed in the toast
 */
private void showToast(Context context, CharSequence msg) {
    Log.e("MyDeviceAdminRec...", "::>>>>1 ");
    Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}

@Override
public void onEnabled(Context context, Intent intent) {
    Log.e("MyDeviceAdminRec...", "::>>>>2 ");
    showToast(context, "Sample Device Admin: enabled");
}

@Override
public CharSequence onDisableRequested(Context context, Intent intent) {
    Log.e("MyDeviceAdminRec...", "::>>>>3 ");
    return "This is an optional message to warn the user about disabling.";
}

@Override
public void onDisabled(Context context, Intent intent) {
    Log.e("MyDeviceAdminRec...", "::>>>>4 ");
    showToast(context, "Sample Device Admin: disabled");
}

@Override
public void onPasswordChanged(Context context, Intent intent) {
    Log.e("MyDeviceAdminRec...", "::>>>>5 ");
    showToast(context, "Sample Device Admin: pw changed");
}

@Override
public void onPasswordFailed(Context context, Intent intent) {
    Log.e("MyDeviceAdminRec...", "::>>>>6 ");
    showToast(context, "Sample Device Admin: pw failed");
}

@Override
public void onPasswordSucceeded(Context context, Intent intent) {
    Log.e("MyDeviceAdminRec...", "::>>>>7 ");
    showToast(context, "Sample Device Admin: pw succeeded");
}
}
Run Code Online (Sandbox Code Playgroud)

另外,在res-
> xml-> device_admin_uses_policies中创建一个名为device_admin_uses_policies的文件,并将以下内容添加到其中。

<uses-policies>
    <limit-password />
    <watch-login />
    <reset-password />
    <force-lock />
    <wipe-data />
    <expire-password />
    <encrypted-storage />
    <disable-camera />
</uses-policies>
Run Code Online (Sandbox Code Playgroud)

最后,将此代码添加到清单文件中。

<receiver
    android:name=".MyDeviceAdminReceiver"
    android:description="@string/app_name"
    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_uses_policies"/>

        <intent-filter>
            <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            <action android:name="android.app.action.ACTION_PASSWORD_CHANGED" />
            <action android:name="android.app.action.ACTION_PASSWORD_FAILED" />
            <action android:name="android.app.action.ACTION_PASSWORD_SUCCEEDED" />
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

它将作为后台服务并通知您。它对我很有用。希望它也能为您服务。