我有一个100兆的zip文件,我需要在应用程序首次启动时下载。它需要解压缩到SD卡(400兆)。
我宁愿不必触摸手机的存储空间,因为很多手机的手机存储空间不会有400兆的免费电话。
可以这样做(任何人都有例子吗?)
谢谢, 伊恩
答案 0 :(得分:10)
可以做到。你到底想要什么?下载例程或如何进行检查? 这是下载方法,您应该在AsyncTask中运行它。
/**
* 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();
}
您还可能想检查手机是否至少连接到WiFi(和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) {
...
否则,当他们需要通过慢速电话网络下载100米时,人们会生气。