2013-09-24 68 views
2

我有疑问/有关设备管理员API的问题,使用此API可以限制我的应用程序从任何方式uninstillation,可能是通过使用密码。Android中设备管理员的用途是什么?

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

请帮我解决这个问题。

回答

3

设备管理员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"); 
} 
} 

此外,创建一个文件为名为device_admin_uses_policies到
水库 - > XML-> device_admin_uses_policies并添加下面进去。

<uses-policies> 
    <limit-password /> 
    <watch-login /> 
    <reset-password /> 
    <force-lock /> 
    <wipe-data /> 
    <expire-password /> 
    <encrypted-storage /> 
    <disable-camera /> 
</uses-policies> 

Atlast,添加以下代码清单文件。

<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> 

它将作为后台服务&通知您。它对我很有效。希望它也能为你工作。

相关问题