2017-09-28 5 views
-1

J'essaie d'obtenir la taille de la mémoire externe. Mon code fonctionne parfaitement sur Lollipop et ci-dessous, mais donner exception du chemin non valide sur Guimauve et au-dessus mon code est iciANdroid: java.lang.IllegalArgumentException: Chemin d'accès invalide:/storage/extSdCard

public static String getExternalPath(){ 

    String sSDpath = null; 
    File fileCur = null; 
    for(String sPathCur : Arrays.asList("MicroSD", "external_SD", "sdcard1", "ext_card", "external_sd", "ext_sd", "external", "extSdCard", "externalSdCard")) // external sdcard 
    { 

     fileCur = new File("/mnt/", sPathCur); 
     if(fileCur.isDirectory() && fileCur.canWrite()) 
     { 
      sSDpath = fileCur.getAbsolutePath(); 
      break; 
     } 
     if(sSDpath == null) { 
      fileCur = new File("/storage/", sPathCur); 
      if(fileCur.isDirectory() && fileCur.canWrite()) 
      { 
       sSDpath = fileCur.getAbsolutePath(); 
       break; 
      } 
     } 
     if(sSDpath == null) { 
      fileCur = new File("/storage/emulated", sPathCur); 
      if(fileCur.isDirectory() && fileCur.canWrite()) 
      { 
       sSDpath = fileCur.getAbsolutePath(); 
       //Log.e("path",sSDpath); 
       break; 
      } 
     } 
    } 
    fileCur = new File("/storage/extSdCard"); 

    return fileCur.getAbsolutePath(); 
} 

Et j'appeler cette fonction dans mon activité

public static String getExternalTotalMemory() { 
    StatFs statFs2 = new StatFs(getExternalPath()); 
    long blockSize2 = statFs2.getBlockSize(); 
    final long totalSize2 = statFs2.getBlockCount() * blockSize2;; 
    return formatSize(totalSize2); 
} 
+0

vous pouvez mettre pour 23+ l'autorisation d'exécution pour que vous puissiez ref cette https://developer.android.com/training/permissions/requesting.html –

+0

@HarshitTrivedi je l'ai fait déjà fait ceci, mais je reçois la même chose –

+0

J'ai utilisé ce code pour obtenir des autorisations ActivityCompat.requestPermissions (Main_Booster.this, new String [] {android.Manifest.permission.CLEAR_APP_CACHE, android.Manifest.permission.KILL_BACKGROUND_PROCESSES, android.Manifest. permission.WRITE_SETTINGS, android.Manifest.permission.BATTERY_STATS, android.Manifest.permission.ACCESS_NETWORK_STATE, Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permissi le.WRITE_EXTERNAL_STORAGE }, 1); –

Répondre

0

Dans la guimauve et au-dessus version le chemin de la carte SD externe est changer de sorte qu'il vous donne une erreur.

Vous devez rechercher votre carte SD externe à cet endroit.

/stockage/émulé/0