0

J'ai entendu dire que le téléphone Miui aussi demander la permission comme guimauve alors j'ai créé du code pour cela.Comment vérifier la permission pour les sms dans les téléphones Miui

Cela fonctionne bien sur d'autres téléphones, mais quand je l'ai testé sur les appareils MIUI, renvoie 0 si j'accepte la permission ou l'autorisation refusée.

Ci-dessous je mis mon code qui vérifient l'autorisation

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) 
{ 
    checkAndRequestPermissions(); // this method first check for permisison if not granted then call ActivityCompact.checkSelfPermisison(context,permisison); 
} 
else 
{ 
    int permission = PermissionChecker.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE); 
    Log.d("Permission status","Status"+permission); 
} 
+0

Dans [ce poste] (http://stackoverflow.com/a/35148218/4391450) vous pouvez voir que l'OS de MIUI fournit sa propre gestion des permissions plus tôt qu'android. Il y a donc un problème avec ceux-là. Mais je ne vois aucune aide pour cela ... – AxelH

+0

AxelH j'avais un bouton qui envoie des sms sur le clic et la barre de progression est visible jusqu'à la livraison des sms. mais en miui si je refuse sms permisison toujours barre de progression est visible, donc je veux vérifier si la permission n'est pas accordée alors pas envoyer des sms et ne pas afficher la barre de progression. alors aidez avec quelques suggestions. –

+0

Je reçois votre problème ... mais comme je l'ai dit, cela semble être un problème sur MIUI parce qu'ils fournissent un système différent dans le passé menant à un bug. Je ne sais pas s'il y a une solution, ne travaillez jamais sur ces appareils (ne les connaissez même pas ...) mais avec cette information, vous pouvez essayer de faire des recherches sur cette base. – AxelH

Répondre

0

c'est l'exemple de code pour la guimauve et au-dessus des versions:

public static class utilitaire { public static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 123;

@TargetApi(Build.VERSION_CODES.JELLY_BEAN) 
    public static boolean checkPermission(final Context context) { 
     int currentAPIVersion = Build.VERSION.SDK_INT; 
     if (currentAPIVersion >= android.os.Build.VERSION_CODES.M) { 
      if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 
       if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, Manifest.permission.READ_EXTERNAL_STORAGE)) { 
        AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context, R.style.MyAlertDialogStyle); 
        alertBuilder.setCancelable(true); 
        alertBuilder.setTitle("Permission necessary"); 
        alertBuilder.setMessage("External storage permission is necessary"); 
        alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
         @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 
         public void onClick(DialogInterface dialog, int which) { 
          ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); 
         } 
        }); 
        AlertDialog alert = alertBuilder.create(); 
        alert.show(); 

       } else { 
        ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); 
       } 
       return false; 
      } else { 
       return true; 
      } 
     } else { 
      return true; 
     } 
    } 
} 

Cette méthode vérifie l'autorisation de lecture du stockage externe. veuillez renvoyer le code et manipuler en conséquence. J'espère que cela vous aide.

ajouter également de ce code dans la méthode onCreate

résultat booléen = Utility.checkPermission (MainActivity.this);

+0

Ravish Sharma mon code fonctionne bien sur d'autres appareils, mais ne fonctionne pas seulement dans les appareils MIUI, il retourne toujours 0 pour accepter et refusé la même chose dans la méthode checkAndRequestPermissions() –

+0

c'est pourquoi je vous donne le code vous pouvez vérifier ce code fonctionne sur les appareils MIUI aussi –

+0

ok je vais vérifier et vous répondre. –

0

s'il vous plaît ajoutez ce code et appeler la fonction checkUsagePermission pour le contrôle de l'autorisation de sms lu ci-dessus miui guimauve

private boolean checkUsagePermission() { 
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { 
     AppOpsManager appOps = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE); 
     int mode = 0; 
     mode = appOps.checkOpNoThrow("android:read_sms", android.os.Process.myUid(), getPackageName()); 
     boolean granted = mode == AppOpsManager.MODE_ALLOWED; 
     if (!granted) { 
      //write your code for accept that permission 
      return false; 
     } 
    } 
    return true; 
}