MediaScannerConnection # scanFile convierte directorios en archivos al acceder a ellos con USB-MTP en Android 5 Lollipop
Cambios como cambiar el nombre de un archivo disparado por una aplicación sólo aparecen en la interfaz USB-MTP después de reiniciar el dispositivo Android o después de registrar el nuevo archivo en el MediaScanner de esta manera (ver Trigger mediascanner en la ruta específica (carpeta), cómo? ):
file.renameTo(newFile); MediaScannerConnection.scanFile(context, new String[] { newFile.getAbsolutePath() }, null, null);
USB-MTP se utiliza para acceder al almacenamiento de un dispositivo Android a través de USB. Por ejemplo, con el Explorador de Windows.
- AndroidHttpClient Nullpointerexception llamando a android.net.http.AndroidHttpClient.isMmsRequest
- Adb install falla con error 'INSTALL_FAILED_INSUFFICIENT_STORAGE'
- No se puede detectar Sony Xperia en Eclipse
- ¿Preferencias compartidas? Javax.crypto.BadPaddingException: bloque de pad corrompido sólo en algunos dispositivos
- Juego estrellado en Sony Xperia
Sin embargo, con el Sony XPERIA Tablet Z (SGP321) en Android 5.0.2 (Build 10.6.A.0.454) las carpetas suministradas en newFile
se convertirá en un archivo con 4KB. Ya no puedo acceder a la estructura de carpetas con el Explorador de Windows ya ni puedo copiar el archivo a mi computadora. Incluso después de reiniciar la tableta! El mismo dispositivo con Android 4.4.4 no muestra el comportamiento. Parece que sólo se ha roto la vista USB-MTP. La estructura de archivos a la que accede una aplicación para Android sigue luciendo bien.
Pregunta: ¿Es este comportamiento un error o lo implementé incorrectamente? ¿Cuál sería la implementación correcta?
Lo que he intentado hasta ahora para solucionar el problema:
- Mi solución actual es evitar
scanFile
para directorios. - Puedo convertir archivos en directorios renombrándolos con una aplicación para Android sin
MediaScannerConnection#scanFile
. Después de reiniciar, puedo acceder al directorio con el Explorador de Windows de nuevo. - Cambiar el nombre de los archivos con el Explorador de Windows que realmente son directorios no los restaura. Incluso después de reiniciar.
-
Esta línea, tal como se sugiere en https://stackoverflow.com/a/21918085/433718 , no actualiza la vista USB-MTP, pero tampoco convierte los directorios en archivos:
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(newFile.getParentFile()));
-
Tal vez relacionado:
- Https://stackoverflow.com/a/27321544/433718
- Uso del resolvedor de contenido para todo tipo de operaciones de archivo como suprimir un archivo en esta respuesta: Android Eliminación de archivos MediaScannerConnection
- Cómo conectar mi dispositivo Android a eclipse
- Android Studio: Android Device Monitor no muestra mi dispositivo
- Cómo crear una carpeta de valores separados Sony Xperia Z1 en android
- ADB no detecta Sony Xperia Z3 Compact (android 5.0.2)
- Linterna LED en xperia Z5
- Las cookies no se reciben en los datos móviles, pero recibió con wifi durante el registro en android (dispositivo es sony xperia)
- He utilizado el comando adb "pm bloque com.sonymobile.advancedwidget.entrance" ¿cómo desbloqueo esta aplicación?
- La depuración en Sony Xperia (E2003) dejó de funcionar de repente
Terminé creando un archivo de texto ficticio en cada directorio que quería hacer visible, y uso scanFile en el archivo.
1) crear directorio, pero no "escanear" los directorios
2) copia el archivo al directorio
3) ejecuta scanFile en el filePath
MediaScannerConnection.scanFile (_application, new String[] { filePath }, null, null);