from - Carpeta agregada en Android no visible a través de USB
browse android files from pc (6)
Estoy tratando de guardar imágenes en una subcarpeta en Android. Aquí hay un poco de mi código:
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
path = new File(path, "SubDirName");
path.mkdirs();
(He intentado getExternalStorageDirectory
lugar de getExternalStoragePublicDirectory
y la carpeta Pictures en lugar de DCIM.)
Lo que ocurre es que cualquier subcarpeta que agrego, incluido su contenido, no aparece en el Explorador de Windows cuando el dispositivo está conectado a través de USB. Sin embargo, se muestra en el Administrador de archivos de Android.
He intentado transmitir la intención ACTION_MEDIA_MOUNTED
en el padre del nuevo directorio. No funcionó.
Si agrego un archivo en Windows, aparece en Android. Si agrego un archivo en Android a través del Administrador de archivos, aparece en Windows. Si agrego el archivo mediante programación, aparece en el Administrador de archivos de Android pero no en el Explorador de Windows. Y necesito obtenerlo de Windows y no quiero que el usuario final tenga que crear la carpeta manualmente.
¿Qué estoy haciendo mal?
De esta manera no me funciona a veces. Bueno, aquí está la solución completa.
// snippet taken from question
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
path = new File(path, "SubDirName");
path.mkdirs();
// fix
path.setExecutable(true);
path.setReadable(true);
path.setWritable(true);
// initiate media scan and put the new things into the path array to
// make the scanner aware of the location and the files you want to see
MediaScannerConnection.scanFile(this, new String[] {path.toString()}, null, null);
He resuelto este problema cambiando la configuración del teléfono:
1) Después de que se haya creado y / o guardado el archivo, cambie el modo de (MTP) al modo USB (tarjeta SD) por un momento, espere a que la tarjeta sd se monte en la PC, de modo que se mostrará Dir & file.
2) Vuelva de nuevo al modo (MTP) donde todavía se muestra el último archivo.
3) cuando vuelva a guardar un archivo, tendrá que cambiar a USB nuevamente para verlo.
Incluso el tema parece ser viejo. Me enfrenté al mismo problema y reiniciar el dispositivo Android o la PC no es una solución práctica para los usuarios. :) Este problema es a través del uso del protocolo MTP (odio este protocolo). Lo que tienes que hacer es iniciar una nueva búsqueda de los archivos disponibles y puedes hacerlo usando la clase MediaScannerConnection
:
// snippet taken from question
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
path = new File(path, "SubDirName");
path.mkdirs();
// initiate media scan and put the new things into the path array to
// make the scanner aware of the location and the files you want to see
MediaScannerConnection.scanFile(this, new String[] {path.toString()}, null, null);
Lo único que me funcionó es esto:
Intent mediaScannerIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri fileContentUri = Uri.fromFile(path);
mediaScannerIntent.setData(fileContentUri);
this.sendBroadcast(mediaScannerIntent);
Crédito a https://.com/a/12821924/1964666
primero cree el directorio en la PC y luego cópielo en el almacenamiento de la tarjeta SD / teléfono.
puede poner los contenidos en la carpeta primero y copiarlos o solo la carpeta primero. siempre que la carpeta se cree desde la PC, cualquier contenido se puede copiar directamente a dispositivos móviles internos / externos. para los contenidos comprimidos, no se pueden descomprimir y copiar directamente, desafortunadamente, primero debes descomprimirlos.
Buena suerte y que tengas un buen día! :)
si agrega la carpeta a la tarjeta SD desde la PC directamente a la tarjeta a través del lector de tarjetas, no se mostrará en el explorador de Windows cuando se conecte con el teléfono, la solución es copiar o mover la misma carpeta utilizando el programa administrador de archivos de Android y luego será aparece en el índice de la tarjeta SD cuando está conectado a la PC.