J'ai une application qui a parfois besoin de sauvegarder des fichiers. Avant d'écrire, il vérifie l'espace utilisable sur l'appareil. Voici le code que j'utilise pour vérifier l'espace, avec des instructions de journal.android file.getUsableSpace renvoie zéro avec getExternalFilesDir (null), seulement après la suppression d'autres fichiers
String state = Environment.getExternalStorageState();
Log.d("Classname", "external storage state is " + state);
File file = new File(getExternalFilesDir(null) + File.separator);
Log.d("Classname", "file exists " + file.exists());
long usableSpace = file.getUsableSpace();
Log.d("Classname", "Space available " + usableSpace);
J'ai reçu un rapport de bogue après la suppression d'autres fichiers, environ 3-5 Mo, sur un dispositif qui a environ 3 Go d'espace libre, getUsableSpace retourne 0 en essayant de sauver un autre fichier.
Le journal avant d'ajouter le premier fichier:
11:21:46.879: external storage state is mounted
11:21:46.879: file exists true
11:21:46.880: Space available 3185496064
Le journal après avoir supprimé le premier fichier, en essayant d'ajouter une seconde:
11:21:57.811: external storage state is mounted
11:21:57.822: file exists false
11:21:57.823: Space available 0
Je autorisations de stockage externes dans mon manifeste, et J'ai essayé de vérifier si le stockage est monté et d'appeler mkdir() lors de la création du fichier de stockage externe, et le bug persiste. J'ai également demandé au testeur de redémarrer l'appareil, pensant que cela pouvait être dans un état bizarre.
Est-ce que quelqu'un a des idées pour lesquelles cela pourrait se produire?