0

Je suis confronté à un problème. Ce qui ne se produit pas lorsque l'utilisateur a donné toutes les autorisations requises. Cela se produit lorsque l'utilisateur a refusé la permission. Je montre à l'utilisateur une boîte de dialogue pour activer les autorisations de Apps-> AppName-> Paramètres. Je prends l'utilisateur là-bas. Mais lorsque l'utilisateur tente d'activer l'une des autorisations, il affiche le message. System Overlay Détecté et ne permet pas à l'utilisateur d'activer les autorisations. J'ai beaucoup cherché google et Stackoverflow mais je n'ai trouvé aucune solution. Certaines personnes ont résolu la solution en désactivant le toast, mais je ne montre aucun toast.Android Request Permission System Overlay détecté

Remarque: Ce problème se produit uniquement lorsque vous refusez l'une des autorisations.

Voici mon code

private void showPermissionDialog(String message, final int permissionCode){ 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Permission Required"); 

    if(permissionCode == Constants.REQ_CODE_PERMISSION_SYSTEM_OVERLAY_WINDOW) { 
     builder.setMessage(Constants.getOverlayNotEnabledMessage(Constants.getInstance(this))); 
    } else { 
     builder.setMessage(message + " To enable go to apps, Select " + 
       getResources().getString(R.string.app_name) + " Enable permissions now?"); 
    } 

    builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialogInterface, int i) { 
      dialogInterface.dismiss(); 
      if(permissionCode == Constants.REQ_CODE_PERMISSION_READ_CONTACTS){ 
       MainActivity.this.finish(); 
      } 
     } 
    }); 
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialogInterface, int i) { 

      if(permissionCode == Constants.REQ_CODE_PERMISSION_SYSTEM_OVERLAY_WINDOW) { 
       requestOverlayPermissions(); 
      } else { 
       Intent intent = new Intent(); 
       intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); 
       Uri uri = Uri.fromParts("package", getApplicationContext().getPackageName(), null); 
       intent.setData(uri); 
       MainActivity.this.startActivityForResult(intent, permissionCode); 
      } 
     } 
    }); 
    AlertDialog alertDialog = builder.create(); 
    alertDialog.setCancelable(false); 
    alertDialog.show(); 
} 

Répondre

0

En M android, il n'y a pas de solution à ce problème. Si votre application requiert l'autorisation SYSTEM_OVERLAY_WINDOW, vous ne pouvez pas activer ou désactiver les autorisations dans les paramètres. La seule solution (Aucune solution du côté du développeur) est claire des données de l'application, cela demandera à nouveau des autorisations