Android Descargar Zip a la tarjeta SD?
Tengo un archivo zip de 100 meg que necesito descargar cuando empiece la primera aplicación. Necesita descomprimir a la tarjeta SD (400 meg).
Prefiero no tener que tocar el almacenamiento del teléfono, ya que muchos teléfonos no tendrán 400 meg gratis en el almacenamiento del teléfono.
- Compresión de datos en Android (aparte de java.util.zip?)
- Adición de Parse-1.8.0 a Android Studio 1.0.1 (O cualquier archivo .zip)
- Descomprimir archivo en activos de Android
- XAPK La validación de archivos muestra los datos correctos Información
- Descomprimir archivo zip da "java.util.zip.ZipException: No se puede leer la versión" o "java.util.ZipException No se puede leer la versión de encabezado local 45"
¿Se puede hacer esto (¿alguien tiene un ejemplo?)
Gracias, ian
- Osmdroid - cambiar la carpeta del mapa local
- Si no comprimo un archivo de texto sin formato en Android, ¿se comprimirá en el APK de todos modos?
- Cómo descomprimir archivos zip grandes y escribir en SDCARD en menos tiempo
- Cómo crear un ZIP InputStream en Android sin crear primero un archivo ZIP?
- Cómo leer un archivo directamente desde un archivo .zip sin extraerlo en android
- No se puede extraer el archivo del archivo ZIP creado en Android (específico de dispositivo / OS)
- Archivo de expansión de Android
- Modificación del contenido de un archivo .aar de Android / Conversión a un formato .zip
Puede hacerse. ¿Que es exactamente lo que está buscando? ¿La rutina de descarga o cómo hacer el cheque? Aquí está el método de descarga, debe ejecutarlo en un AsyncTask o menos.
/** * Downloads a remote file and stores it locally * @param from Remote URL of the file to download * @param to Local path where to store the file * @throws Exception Read/write exception */ static private void downloadFile(String from, String to) throws Exception { HttpURLConnection conn = (HttpURLConnection)new URL(from).openConnection(); conn.setDoInput(true); conn.setConnectTimeout(10000); // timeout 10 secs conn.connect(); InputStream input = conn.getInputStream(); FileOutputStream fOut = new FileOutputStream(to); int byteCount = 0; byte[] buffer = new byte[4096]; int bytesRead = -1; while ((bytesRead = input.read(buffer)) != -1) { fOut.write(buffer, 0, bytesRead); byteCount += bytesRead; } fOut.flush(); fOut.close(); }
También es posible que desee comprobar si el teléfono está al menos conectado a WiFi (y 3G);
// check for wifi or 3g ConnectivityManager mgrConn = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); TelephonyManager mgrTel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); if ((mgrConn.getActiveNetworkInfo()!=null && mgrConn.getActiveNetworkInfo().getState()==NetworkInfo.State.CONNECTED) || mgrTel.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS) { ...
De lo contrario la gente se enoja cuando necesitan descargar 100m a través de una red de teléfono lento.