2017-06-07 1 views
0

Dans les versions Android inférieures à la guimauve, je peux exécuter mon application qui écrit un fichier sur le stockage externe. Et dans ces systèmes, la permission est accordée au moment de l'installation de l'application. Mais quand j'ai essayé d'exécuter mon application dans guimauve, il dit "l'application n'a pas besoin d'autorisations" au moment de l'installation. Et l'application se ferme de façon inattendue au moment où j'exécute la fonction d'écriture.Avons-nous besoin de demander explicitement la permission autre que AndroidManifest.xml dans Marshmallow?

Généralement, l'appareil demande d'accorder des autorisations sur chaque application au moment où elle est ouverte pour la première fois. mais dans mon application, cela ne se produit pas non plus.

Répondre

0

Vous devez fournir la gestion des autorisations d'exécution pour Android 6.0+ (Marshmallow) vous-même. Voir here pour plus d'informations.

1

Dans Android M et au-dessus, vous devez demander les autorisations classées comme "dangereuses". Vous pouvez trouver une liste complète des autorisations qui doivent être demandées here.

Vous pouvez cependant éviter de demander en définissant compileSDK et targetSDK à < 23. Notez que cela vous empêche d'utiliser l'une des fonctionnalités API 23+.

Vous demander les autorisations comme ceci:

ActivityCompat.requestPermissions(MainActivity.this, 
       new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},//Your permissions here 
       1);//Random request code 

Vérifiez si l'utilisateur est en cours d'exécution API 23+ en faisant:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ 
    //Request: Use a method or add the permission asking directly into here. 
} 

Et si vous avez besoin de vérifier le résultat, vous pouvez le faire comme ceci:

@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case 1: { 

      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       // permission was granted, yay! Do the 
       // contacts-related task you need to do.   
      } else { 

       // permission denied, boo! Disable the 
       // functionality that depends on this permission. 
       Toast.makeText(MainActivity.this, "Permission denied to read your External storage", Toast.LENGTH_SHORT).show(); 
      } 
      return; 
     } 

     // other 'case' lines to check for other 
     // permissions this app might request 
    } 
} 
+0

wow..Thanks .. !! –