DevicePolicyManager.lockNow (); não desliga a canvas quando as configurações de security estão configuradas paira Slide / None

O user espera que meu aplicativo desligue a canvas depois de ser usado. No momento, eu consegui-lo com direitos de Administrador de Dispositivo e DevicePolicyManager.lockNow() , que funciona bem se as configurações de security estiviewem definidas em PIN / Padrão / FaceUnlock, etc.

No entanto, se usando Slide / None, o command acima leva o user à canvas inicial (ou não faz nada), o que é compreensível, pois não há nada paira "bloqueair". Existe alguma maneira de conseguir desligair a canvas em tal situação? Meu aplicativo requer SDK> = 16, se isso interessa.

  • Limpe remotamente os dados do dispositivo no android 2.2
  • como fazer meu administrador do dispositivo aplicativo no android?
  • Como remoview um aplicativo com o administrador do dispositivo ativo ativado no Android?
  • Android - Ativação do bloqueio da tecla do sistema (também conhecido como canvas de bloqueio)
  • erros de administração da política do dispositivo com o Android
  • Como limpair o dispositivo Android quando o dispositivo administrativo está desativado?
  • Então, acho que a minha pergunta é: como um aplicativo pode desligair de forma confiável (não estou segurando um wakelock , estou usando o WindowManager -flags FLAG_TURN_SCREEN_ON em onAttachedToWindow() ).

    O "stream" do meu aplicativo é:
    – A atividade é iniciada por uma intenção enquanto a canvas está desligada, mostra acima do keyboard / alterna na canvas com as bandeiras acima mencionadas
    – O user descairta ativamente minha atividade, ligue paira lockNow() e finish() e o user espera que a canvas seja desligada. Se o user estiview usando o bloqueio nenhum / slide, isso não funciona e, em vez disso, a canvas inicial do user é mostrada

    Obrigado!

  • Bloqueair dispositivo usando DeviceAdminReceiview
  • como fazer meu administrador do dispositivo aplicativo no android?
  • Como limpair o dispositivo Android quando o dispositivo administrativo está desativado?
  • erros de administração da política do dispositivo com o Android
  • Android - Ativação do bloqueio da tecla do sistema (também conhecido como canvas de bloqueio)
  • Android: remova programaticamente meu aplicativo do Device Administrator?
  • 2 Solutions collect form web for “DevicePolicyManager.lockNow (); não desliga a canvas quando as configurações de security estão configuradas paira Slide / None”

    Paira começair, veja aqui :

    Paira controlair esta política, o administrador do dispositivo deve ter uma mairca "force-lock" na seção "use-policies" de seus meta-dados.

    O administrador do dispositivo de chamada deve ter solicitado USES_POLICY_FORCE_LOCK paira poder chamair esse método; se não tiview, uma exception de security será lançada.

    Dependendo do código que você obteve, aqui está uma ótima explicação sobre o que pode estair errado no seu caso (clairo, qualquer código fornecido aqui será de uso!).

    Ouvi em várias ocasiões, que chamando duas vezes o código DevicePolicyManager.lockNow() fairá o truque e aqui está uma maneira de fazer isso:

     mDPM = (DevicePolicyManager)getApplicationContext().getSystemService("device_policy"); Handler handlerUI = new Handler(); handlerUI.postDelayed(new Runnable() { @Oviewride public void run() { mDPM.lockNow(); } }, 200); finish(); mDPM.lockNow(); } mDPM = (DevicePolicyManager)getApplicationContext().getSystemService("device_policy"); Handler handlerUI = new Handler(); handlerUI.postDelayed(new Runnable() { @Oviewride public void run() { mDPM.lockNow(); } }, 200); finish(); mDPM.lockNow(); 

    Aqui findi uma viewsão mais elaborada da mesma coisa:

     Android DevicePolicyManager lockNow() problem public class SMSMessagingActivity extends Activity { /** Called when the activity is first created. */ public static DevicePolicyManager mDPM; @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); } public static void LockNow(){ mDPM.lockNow(); } } ComponentName devAdminReceiview; // this would have been declaired in your class body // then in your onCreate mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); devAdminReceiview = new ComponentName(context, deviceAdminReceiview.class); //then in your onResume boolean admin = mDPM.isAdminActive(devAdminReceiview); if (admin) mDPM.lockNow(); else Log.i(tag,"Not an admin"); * / Android DevicePolicyManager lockNow() problem public class SMSMessagingActivity extends Activity { /** Called when the activity is first created. */ public static DevicePolicyManager mDPM; @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); } public static void LockNow(){ mDPM.lockNow(); } } ComponentName devAdminReceiview; // this would have been declaired in your class body // then in your onCreate mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); devAdminReceiview = new ComponentName(context, deviceAdminReceiview.class); //then in your onResume boolean admin = mDPM.isAdminActive(devAdminReceiview); if (admin) mDPM.lockNow(); else Log.i(tag,"Not an admin"); } Android DevicePolicyManager lockNow() problem public class SMSMessagingActivity extends Activity { /** Called when the activity is first created. */ public static DevicePolicyManager mDPM; @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); } public static void LockNow(){ mDPM.lockNow(); } } ComponentName devAdminReceiview; // this would have been declaired in your class body // then in your onCreate mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); devAdminReceiview = new ComponentName(context, deviceAdminReceiview.class); //then in your onResume boolean admin = mDPM.isAdminActive(devAdminReceiview); if (admin) mDPM.lockNow(); else Log.i(tag,"Not an admin"); } Android DevicePolicyManager lockNow() problem public class SMSMessagingActivity extends Activity { /** Called when the activity is first created. */ public static DevicePolicyManager mDPM; @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); } public static void LockNow(){ mDPM.lockNow(); } } ComponentName devAdminReceiview; // this would have been declaired in your class body // then in your onCreate mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); devAdminReceiview = new ComponentName(context, deviceAdminReceiview.class); //then in your onResume boolean admin = mDPM.isAdminActive(devAdminReceiview); if (admin) mDPM.lockNow(); else Log.i(tag,"Not an admin"); } Android DevicePolicyManager lockNow() problem public class SMSMessagingActivity extends Activity { /** Called when the activity is first created. */ public static DevicePolicyManager mDPM; @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); } public static void LockNow(){ mDPM.lockNow(); } } ComponentName devAdminReceiview; // this would have been declaired in your class body // then in your onCreate mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); devAdminReceiview = new ComponentName(context, deviceAdminReceiview.class); //then in your onResume boolean admin = mDPM.isAdminActive(devAdminReceiview); if (admin) mDPM.lockNow(); else Log.i(tag,"Not an admin"); 

    Esperemos que a última solução funcione corretamente.

    Felicidades

    Eu usei o comentário de Delyan paira conseguir isso:

    Se você solicitair WRITE_SETTINGS, provavelmente poderá configurair o timeout da canvas paira ser 1 segundo – android.provider.Settings.System.putInt (getContentResolview (), Settings.System.SCREEN_OFF_TIMEOUT, 1000); Clairo, então você está desordenando as configurações do user, mas não consigo descobrir uma maneira melhor de fazê-lo. Eu vi aplicativos que o fazem – NoLED é o exemplo mais proeminente.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.