2014-04-10 3 views
0

장치에서 DeviceAdmin을 사용할지 묻는 메시지가 표시되는지 확인한 후 Activity에서 DevicePolicyManager를 시작합니다.DevicePolicyManager를 명시 적으로 삭제할 수 없습니다.

사용자가 "활성화 버튼"을 클릭하면 deviceAdmin이 활성화됩니다.

사용자가 "취소"버튼을 클릭하면 "사용자는 응용 프로그램을 계속하려면 장치에서 장치 관리자를 활성화해야합니다"라는 대화 상자가 표시됩니다. 이 대화 상자에서 "확인"을 클릭하면 앱이 종료됩니다.

모든 장치에서 예상대로 작동합니다. 그러나 설정 섹션의 장치에서 "활동 보관 안함"을 사용하면 사용자가 DeviceAdmin 활성화 프롬프트를 "취소"하도록 선택한 경우 위의 동작이 변경됩니다. 사용자가 프롬프트에서 취소를 클릭하면 대화 상자를 표시하지 않고 의도 한 DevicePolicyManager가 다시 시작됩니다. "응용 프로그램을 계속하려면 장치에서 장치 관리자를 활성화해야합니다". 왜 이런 일이 일어나는 지 아는 사람이 있습니까? 활성화 또는 onDisable에서받을 때 비활성화 DPM, 그래서 다음 사용자에게 통지 할 수있는 경우

답변

0

응용 프로그램에서 작성한 것이 클래스, 이

public class DeviceAdmin extends DeviceAdminReceiver { 

static SharedPreferences getSamplePreferences(Context context) { 
    return context.getSharedPreferences(DeviceAdminReceiver.class.getName(), 0); 
} 

void showToast(Context context, CharSequence msg) { 
    Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void onEnabled(Context context, Intent intent) { 
    // showToast(context, "Device Admin: enabled"); 
} 

@Override 
public CharSequence onDisableRequested(Context context, Intent intent) { 
    //return "This is an optional message to warn the user about disabling."; 
    return null; 
} 

@Override 
public void onDisabled(Context context, Intent intent) { 
    // showToast(context, "Device Admin: disabled"); 
} 

} 

이제 지점에 오는 받게됩니다 당신 일부 활동을 사용하여 DPM을 시작합니다. 따라서 onActivityResult에서 취소 버튼을 클릭하거나 버튼을 활성화 한코드를 사용하여 resultCode를 수신합니다. DPM이 활성화되었거나 취소 된 경우 확인할 수있는 코드를 사용하여 경고가있는 사용자에게 알림을 보내고 경고 만받습니다. 하나의 확인 버튼을 클릭하면 활동이 끝납니다. 나는이 쇼라고 생각합니다. uld 작업이 작동하지 않으면 문제를 알려주십시오. 해피 코딩

+0

내 활동에서 DPM을 시작하면 DPM 상태를 얻기 위해 onActivityResulty의 검사를 추가했습니다. 이 문제는 없습니다. 그러나 DPM이 활성화되지 않은 상태가되면 사용자에게 DPM 상태를 알리는 대화 상자를 표시합니다. 정상적인 경우에는 정상적으로 작동합니다. "활동을 유지하지 않음"이 활성화 된 경우 DPM 프롬프트에서 취소를 클릭하면 대화 상자 경고가 표시되지 않지만 DPM 프롬프트는 계속 표시됩니다. –

0

"활동 보관 안함"을 사용하면 장치 관리 활동이 표시되는 즉시 주 활동이 완료됩니다.

"장치 관리자"가 취소되면 이전 활동이 복원됩니다. 인수로 저장된 상태로 onCreate이 호출됩니다.

이 번들에는 아무 것도 저장하지 않았으므로 처음으로 실행하는 것과 동일한 동작을 보입니다.

+0

고마워요.하지만 나는 그걸 시도해 보았습니다 ... Device Admin이 취소되었을 때, Activity 결과에 번들로 deviceadmin의 상태가 저장되었습니다. oncreate에서 번들에 deviceadmin 상태 값이 변수에 저장되어 있는지 확인했습니다. 변수에 예상 값, 즉 deviceadmin의 취소 된 상태가 있습니다. 그래서이 값을 검색 할 때 대화 상자를 보여 주려고했습니다. 그러나이 시점에서 누출이 나타납니다. 액티비티가 윈도우 [email protected] wa –

+0

http : // stackoverflow가 누수되었습니다.이 오류는 logcat에서 발견되었습니다. com/questions/11649949/how-to-know-dont-keep-activities-is-ics 이것을 확인하십시오. – Amit

+0

을 확인하고 onActivityResult에서 무엇을 받습니까? – Amit