2013-09-24 94 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> 

它將作爲後臺服務&通知您。它對我很有效。希望它也能爲你工作。

相關問題