Je veux obtenir la taille de la mémoire libre sur le stockage interne/externe de mon appareil de manière programmatique. J'utilise ce morceau de code :
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
long megAvailable = bytesAvailable / 1048576;
Log.e("","Available MB : "+megAvailable);
File path = Environment.getDataDirectory();
StatFs stat2 = new StatFs(path.getPath());
long blockSize = stat2.getBlockSize();
long availableBlocks = stat2.getAvailableBlocks();
String format = Formatter.formatFileSize(this, availableBlocks * blockSize);
Log.e("","Format : "+format);
et le résultat que j'obtiens est :
11-15 10:27:18.844: E/(25822): Available MB : 7572
11-15 10:27:18.844: E/(25822): Format : 869MB
Le problème est que je veux récupérer la mémoire libre de la SdCard qui est 1,96GB
en ce moment. Comment puis-je corriger ce code pour obtenir la taille gratuite ?
1 votes
Depuis le niveau 18 de l'API, la méthode a été renommée pour se terminer par Long. Il faudrait probablement ajouter une vérification du niveau d'API précédent.
0 votes
Toutes les solutions que j'ai essayées ne fonctionnent pas, quand je fais le formatage en tant que stockage interne ... pouvez-vous m'aider, comment faire pour réaliser cela ?
0 votes
Fermé en tant que duplicate - un post plus récent a des réponses jusqu'à Android R
0 votes
Réponse parfaite ici stackoverflow.com/a/30401010/5773037