Android: Cómo descargar el archivo desde el servidor y guardarlo en una carpeta específica en sdcard
Tengo un requisito en mi aplicación de Android. Necesito descargar y guardar el archivo en la carpeta específica de sdcard Programáticamente. He desarrollado código fuente ..
Y mi código es
- Android IME: muestra un cuadro de diálogo emergente personalizado (como el teclado Swype) que puede introducir texto en el TextView
- Ocultar el teclado después de llamar a la nueva actividad que muestra un ProgressDialog
- Permiso denegado cuando intento iniciarServicio
- Cuando se utiliza AlertDialog.Builder con EditText, el Soft Keyboard no aparece
- Android show softkeyboard con showSoftInput no funciona?
String DownloadUrl = "http://myexample.com/android/"; String fileName = "myclock_db.db"; DownloadDatabase(DownloadUrl,fileName); // and the method is public void DownloadDatabase(String DownloadUrl, String fileName) { try { File root = android.os.Environment.getExternalStorageDirectory(); File dir = new File(root.getAbsolutePath() + "/myclock/databases"); if(dir.exists() == false){ dir.mkdirs(); } URL url = new URL("http://myexample.com/android/"); File file = new File(dir,fileName); long startTime = System.currentTimeMillis(); Log.d("DownloadManager" , "download url:" +url); Log.d("DownloadManager" , "download file name:" + fileName); URLConnection uconn = url.openConnection(); uconn.setReadTimeout(TIMEOUT_CONNECTION); uconn.setConnectTimeout(TIMEOUT_SOCKET); InputStream is = uconn.getInputStream(); BufferedInputStream bufferinstream = new BufferedInputStream(is); ByteArrayBuffer baf = new ByteArrayBuffer(5000); int current = 0; while((current = bufferinstream.read()) != -1){ baf.append((byte) current); } FileOutputStream fos = new FileOutputStream( file); fos.write(baf.toByteArray()); fos.flush(); fos.close(); Log.d("DownloadManager" , "download ready in" + ((System.currentTimeMillis() - startTime)/1000) + "sec"); int dotindex = fileName.lastIndexOf('.'); if(dotindex>=0){ fileName = fileName.substring(0,dotindex); } catch(IOException e) { Log.d("DownloadManager" , "Error:" + e); } }
Ahora El problema es sólo un archivo vacío con el nombre de archivo myclock_db.db está guardando en la ruta. Pero necesito descargar y guardar el contenido del archivo en la carpeta específica. Intentó varias maneras de conseguir la transferencia directa del archivo, pero no puedo. ¿Puede alguien ayudarme a resolver el problema …
Gracias por adelantado…
- Idioma de la disposición del teclado de Android
- ¿Cuáles son la semántica de cada constante de InputType?
- Número de teléfono multilínea de Android edittext
- Cómo detectar la visibilidad del selector de método de entrada sin el permiso de accesibilidad
- ¿Es posible tener activo tanto el teclado físico como el teclado virtual al mismo tiempo?
- ¿Cómo obtener sugerencias de auto-corrección de teclado suave?
- Obtención de información desde el teclado en pantalla mediante libgdx
- ¿Deshabilitar la vista de edición de pantalla completa para la entrada de teclado suave en paisaje?
La URL de descarga no es un enlace a ningún archivo. Es un directorio. Asegúrese de que su un archivo y existe. También compruebe su logcat ventana de registros de errores. Una sugerencia más, siempre es mejor hacer un printStackTrace () en bloqueos de captura en lugar de registros. Su da una vista más detallada del error.
Cambiar esta línea:
URL url = new URL("http://myexample.com/android/");
a:
URL url = new URL("http://myexample.com/android/yourfilename.txt"); //some file url
A continuación, en el bloque catch, agregue esta línea:
e.printStackTrace();
También en la ruta del directorio, debe ser algo como esto:
File dir = new File(root.getAbsolutePath() + "/mnt/sdcard/myclock/databases");
en lugar de
File dir = new File(root.getAbsolutePath() + "/myclock/databases");
A continuación, asegúrese de que ha adquirido permiso para escribir en el almacenamiento externo en el manifiesto de Android.
- Identificar y cancelar un envío de alarma a un AlarmManager
- Forzar la acción Mostrar la barra de búsqueda