0
votes

Comment puis-je rediriger mon application sur un écran de verrouillage lorsque REENTER App

Mon application pourrait être verrouillée avec une goupille ou une empreinte digitale. J'ai pu faire cela sur l'application commencer par une activité d'activité "démarrage". Mais quand il est une fois géré, il est déverrouillé. Mais je veux que lorsque l'application soit en arrière-plan, l'écran de verrouillage est affiché lorsque l'application est reprise. Comment puis-je gérer cela?

J'essayais de démarrer une intention lorsque Onresume () Code> de MainActivité est appelé. P>

@Override
protected void onResume() {
    super.onResume();

    Intent settingsIntent = new Intent(this, StartUpActivity.class);
    startActivity(settingsIntent);

}


2 commentaires

Il suffit d'utiliser quelque chose comme ça, je suppose Stackoverflow.com/Questtions/3446202/...


Ce n'est pas que je souhaite savoir quand le téléphone est déverrouillé / verrouillé, mais lorsque mon application vient au premier plan, puis redirekt vers mon activité de démarrage. Mais sans la boucle d'infini. Mais merci pour le lien.


4 Réponses :


1
votes

Onresume code> est un endroit propice à démarrer. Mais vous devez ajouter également quelque chose qui gère la logique de verrouillage / déverrouillage et définissez des écrans non verrouillables pour éviter les boucles.

verrouiller / déverrouiller code> logique pourrait être placé dans quelque chose comme PinManager code > p> xxx pré>

Pour éviter les boucles, vous pouvez définir l'interface: p>

class Navigator {
  fun verifyPin(acitvity:Activity) {
    if(activity is not NonLockedActivity) {
      startActivity(VerifiyPinActivity::class)
    }
  }
}


1 commentaires

Oui, je faisais une chose semblable à éviter les boucles, mais que je ne pouvais pas distinguer si l'application était en arrière-plan ou que l'Ontart () / Onresume () a été appelé à partir d'une activité interne.



0
votes

J'ai pu faire le chèque décrit dans cette réponse: Comment détecter quand une application Android va à l'arrière-plan et revenez au premier plan

Avec cela, je pouvais vérifier si l'application est venue de l'arrière-plan ou d'une activité interne. Et puis je pourrais appeler l'intention de mon activité de démarrage.


0 commentaires

0
votes

Cela dépend de la façon dont vous avez effectué votre verrouillage de code PIN.

de la question que je suppose que vous avez utilisé une approche de bibliothèque ou de soi-même. Dans ce cas, vous pouvez stocker une certaine valeur isocké dans SharedPreferences et le modifier à chaque fois dans OnDestroy ou dans OnStop à vrai . Lorsque l'utilisateur entre dans votre application, vous devez vérifier si islocked == affichait et écrivez l'écran de broche et modifiez-le sur false sur le déverrouillage avec succès, et si isoled == false Vous pouvez procéder à vous flux d'applications. Si vous voulez que cela soit plus facile, vous pouvez simplement avoir une variable statique et manipuler sa valeur - mais sur la récréation du processus d'application, elle sera modifiée en valeur par défaut.

Mais je vous recommanderais de regarder ces méthodes - elles sont par défaut pour l'OS Android.

avec KeyGuardManager Vous devriez devoir Utilisez Intention Intention = KeyGuardManager.CreateconfirmDevicecredInintent (Titre, Description) En conjonction avec StartActivityForresult (Intention) Qui va gérer toutes les choses dont vous avez besoin et dans OnActivityResult Vous pouvez gérer d'avancer.

À partir de API 28 Vous pouvez utiliser biométricprompt . Vous pouvez utiliser son méthode SETDevicecreDayalallowed (true) qui gérera la touche de code PIN de la même manière que cléguardmanager uniquement avec les options de visage / d'empreinte digitale . biométricprompt a la méthode authentifier qui invitera réellement l'écran PIN. Il reçoit l'auditeur comme argument afin que vous n'ayez pas besoin de OnActivityResult .


1 commentaires

C'est un point intéressant, je vais regarder dans la cléguardmangager. Et vous avez raison, j'utilise ma propre activité pour afficher et gérer les trucs de broche / empreinte digitale.



0
votes

Avez-vous vérifié cette réponse? Blocage des applications Android Programmatiquement

En fait, j'ai presque le même problème, et je me débats toujours avec ce problème. Comment détecter quand l'application est au premier plan.


1 commentaires

J'ai pu identifier lorsque l'application est venue de fond avec la réponse: Stackoverflow.com/a/15573121/8097976