Je gère souvent mes fichiers dans Termux avec des scripts qui utilisent la fonction mv
pour les déplacer ou les renommer. Je veux déclencher manuellement le MediaProvider pour qu'il scanne mon stockage interne ( /storage/emulated/0
) ou un répertoire donné dans celui-ci en ligne de commande, sur un téléphone fonctionnant sous Nougat ou Oreo.
Lorsque j'utilise un gestionnaire de fichiers à interface graphique, tous les déplacements/renommages sont immédiatement répercutés dans d'autres applications dépendant du MediaScanner, comme Gallery, mais les modifications effectuées dans un terminal ne le sont pas, jusqu'à ce que je redémarre. Je dois donc appeler manuellement MediaScanner pour mettre à jour mes modifications dans le système de fichiers.
Avant KitKat, cela fonctionnait bien sur /storage/sdcard0
(une partition séparée nommée glow
) :
am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard
La commande ci-dessus ne fonctionne plus ( /storage/emulated/0
), évidemment.
J'ai également essayé ceci, mais cela ne semble pas fonctionner non plus.
am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard
Je viens de tester à nouveau les commandes, elles semblent fonctionner sur les supports de stockage amovibles tels que /storage/sdcard1
, /storage/usba
o /storage/{volume id}
(il est re-scanné), mais pas la mémoire interne de mon téléphone (où les données sont stockées). /sdcard
pointe vers, ou /storage/emulated/0
).
Quelqu'un a-t-il des idées ? Le redémarrage de mon téléphone provoque toujours un rescan mais c'est peu pratique dans certains cas.
Remarque : les commandes sont exécutées en tant que root, donc pas de problème de permissions.