Utilizar as classes SDK do DevicePolicyManager no OS 2.2 no Android enquanto suporta dispositivos OS 2.1

Eu quero usar alguns DevicePolicyManager métodos no meu aplicativo. O DevicePolicyManager foi introduzido no OS 2.2, mas meu aplicativo deve continuar em execução nos dispositivos OS 2.1.

Aqui está o pseudocódigo do que eu quero fazer:

if (needSecurity)
{
  if (runningOS2.2orGreater) 
  {
    // Invoke the required security policy, e.g.
    setPasswordQuality(myComponentName, PASSWORD_QUALITY_NUMERIC)
  }
  else
  {
    // Tell the user they can't use this feature
  }
}

De ler os documentos, acho que também preciso de um DeviceAdminReceiver para manipular retornos de chamada onPasswordFailed e onPasswordSucceeded.

De outras perguntas do Stackoverflow (por exemplo,Aqu), Acredito que tenho duas opções:

1. Reflexã

Continue construindo no OS 2.1 SDK e use a reflexão para chamar classes em tempo de execução, por exemplo,

Class myClass =                                                                        
  ClassLoader.getSystemClassLoader().loadClass("android.app.admin.DevicePolicyManager")

Object DPMInstance = myClass.newInstance();                                            

Method myMethod = myClass.getMethod("setPasswordQuality",                              
                                    new Class[] { ComponentName.class,                 
                                                  int.class });                        
myMethod.invoke(DPMInstance,                                                           
                new Object[] { myComponentName,                                        
                               PASSWORD_QUALITY_NUMERIC });                            

Se eu precisar implementar um DeviceAdminReceiver, a reflexão funcionará? Como lidaria com retornos de chamada para DeviceAdminReceiver e retornaria para minhas próprias classes de aplicativos?

2. Carregamento de classe condicional

Altere para compilar no SDK do OS 2.2. No tempo de execução, carregue apenas as classes OS 2.2 se a versão atual do dispositivo for OS 2.2 ou mais recente, por exemplo,

int sdk = new Integer(Build.VERSION.SDK).intValue();

if (sdk > 7) 
{
  sLog.info("OS 2.2 or later");
  return new myClassImplementsDeviceAdminInterfaces();
}
else
{
  sLog.info("OS 2.1 or earlier");
  return new myClassDoesNotSupportDeviceAdmin();
}

ssa abordagem parece que produzirá um código mais fácil de oferecer suporte e provavelmente também funcionará com um DeviceAdminReceiver. Alguém está ciente de quaisquer inconvenientes ou complicaçõe

Então, minhas perguntas são:

Você recomendaria reflexão ou carregamento de classe condicional para usar o DevicePolicyManager? Preciso de um DeviceAdminReceiver ou posso detectar se o usuário tem uma senha adequada, por exemplo chamando repetidamente isActivePasswordSufficient no meu aplicativo para confirmar que foi feito?Quaisquer outras dicas, se você as tiver (por exemplo,essa questã sugere que pode haver problemas obrigando o usuário a redefinir sua senha

Obrigado

questionAnswers(1)

yourAnswerToTheQuestion