Le modifiche come la ridenominazione di un file attivato da un'applicazione vengono visualizzate nell'interfaccia USB-MTP dopo il riavvio del dispositivo Android o dopo la registrazione il nuovo file al MediaScanner loro come questa (vedi Trigger mediascanner on specific path (folder), how to?):MediaScannerConnection # scanFile converte le directory in file quando le si accede con USB-MTP su Android 5 Lollipop
file.renameTo(newFile);
MediaScannerConnection.scanFile(context,
new String[] { newFile.getAbsolutePath() }, null, null);
USB-MTP viene utilizzato per accedere alla memoria di un dispositivo Android tramite USB. Per esempio. con Windows Explorer.
Tuttavia, con il Sony Xperia Tablet Z (SGP321) sotto Android 5.0.2 (Build 10.6.A.0.454) cartelle forniti in newFile
diventerà un file con 4KB. Non riesco più ad accedere alla struttura delle cartelle utilizzando Windows Explorer, né posso copiare il file sul mio computer. Anche dopo il riavvio del tablet! Lo stesso dispositivo con Android 4.4.4 non mostra il comportamento. Sembra che solo la vista USB-MTP sia rotta. La struttura dei file a cui accede un'app per Android sembra ancora a posto.
Domanda: Questo comportamento è un errore o l'ho implementato in modo errato? Quale sarebbe l'implementazione corretta?
Quello che ho provato finora per risolvere il problema:
- mia soluzione attuale è quello di evitare
scanFile
per le directory. - Posso convertire i file nelle directory rinominandoli con un'app per Android senza
MediaScannerConnection#scanFile
. Dopo il riavvio, posso accedere nuovamente alla directory con Windows Explorer. - Rinominare i file con Windows Explorer che in realtà sono directory non li ripristina. Anche dopo il riavvio.
Questa linea come suggerito in https://stackoverflow.com/a/21918085/433718 non aggiorna vista USB-MTP, ma anche non converte le directory in file:
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(newFile.getParentFile()));
Forse correlati:
- https://stackoverflow.com/a/27321544/433718
- Utilizzo di content resolver per tutti i tipi di operazioni sui file come l'eliminazione di un file in questa risposta: Android Deleting Files MediaScannerConnection
ho finito per creare un manichino file di testo in ogni directory che volevo rendere visibile e utilizzare scanfile sul file. –
Hai un'altra correzione per visualizzare la cartella dalla condivisione MTP USB? – reaper