我试图下载一个zip文件,并将其保存到SD卡。
我有一个id为“下载”的按钮
当我点击按钮时,对话框显示并迅速消失。
下面是代码部分的样子。
public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
private ProgressDialog mProgressDialog;
public void download(View view) {
switch (view.getId()) {
case R.id.download:
startDownload();
}
}
private void startDownload() {
String url = "https://mydownloadurl";
new DownloadFileAsync().execute(url);
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_DOWNLOAD_PROGRESS:
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setMessage("Downloading file..");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
return mProgressDialog;
default:
return null;
}
}
class DownloadFileAsync extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(DIALOG_DOWNLOAD_PROGRESS);
}
@Override
protected String doInBackground(String... aurl) {
int count;
try {
URL url = new URL(aurl[0]);
URLConnection conexion = url.openConnection();
conexion.connect();
int lenghtOfFile = conexion.getContentLength();
Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream("/sdcard/mydownload.zip");
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress("" + (int)((total * 100) / lenghtOfFile));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
}
catch (Exception e) {
}
return null;
}
protected void onProgressUpdate(String... progress) {
Log.d("ANDRO_ASYNC",progress[0]);
mProgressDialog.setProgress(Integer.parseInt(progress[0]));
}
@Override
protected void onPostExecute(String unused) {
dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
}
日志中唯一显示的是
17586-17586/com.tyler.myappD/qdmemalloc: ion:映射缓冲基: 0x6da9b000大小: 1892352偏移: 0 fd:47 17586-17586/com.tyler.myappD/qdmemalloc: ion:映射缓冲基: 0x4002a000大小: 4096偏移: 0 fd:52 17586-17586/com.tyler.myappD/OpenGLRenader:冲洗缓存(模式0) 17586-17586/com.tyler.myappD/qdmemalloc: ion: Un映射缓冲库: 0x6da9b000大小:1892352 17586-17586/com.tyler.myappD/qdmemalloc: ion: Un映射缓冲库: 0x4002a000大小:4096 596-5470 /system_processW/InputMEDManagerService:窗口已经聚焦,忽略焦点增益:com.android.internal.view.IInputMEDClient$Stub$Proxy@42942fe8属性=null,令牌=android.os.BinderProxy@41dab9b0,pid=17586,inputType=0x(null)
您的代码可能在doInbackground()
中抛出异常。在你的捕捉块中,你应该记录异常,这样你就可以看到问题是什么。你可以这样做:
Log。e(“Downloader-doInBackground(),“下载时出错”,e)
另外,您是否在Android中指定了
WRITE_EXTERNAL_STORAGE
权限anifest.xml?
/**程序可以将十进制转换为二进制并报告是否使用了非法字符*程序不能将二进制转换为十进制*/import java.util.scanner; /***这个类包含一个完整的程序,只有一个main()方法,用于*将非负十进制整数(即以10为基数的整数)转换为*正二进制整数(即以2为基数的整数)。要*转换的值是从命令行读入的。*/public class BaseConversions2{public
我的java课有一个实验室。我拥有一切,除了不能得到正常工作的平均方法。每当我运行程序时,平均值都是从随机值中计算出来的,而不是更新的值。 程序测试 未排序的数组类(我之前忘记附加)
很抱歉打扰你们,我是编程新手,一直在这个程序上有问题。 谢了! *********编辑***************我从BMI中删除了int值,但有损转换错误仍然存在。有什么办法解决这个问题吗?
问题内容: 我从我的C#网络方法中以这种格式重新获得了JSON: 我现在有一个asp.net下拉列表。好吧,它呈现为带有id 的html下拉列表。 我收到有关AJAX请求的成功警报。如何将这些结果填充到我的#city下拉列表中? 试过这个: 问题答案: 以下是在回调内部应做的事情: 示例: http : //jsfiddle.net/z2D8f/ 或一次附加全部HTML的替代方法,这可能会更快:
我正在尝试用Spray和Akka创建一个新的Scala项目。我正在使用Scala 2.12.1,我的pom如下所示。 这个pom构建了一个WAR文件,但是每次我试图将该WAR文件部署到服务器上时,都会得到以下错误。我相信我使用的依赖项与Scala 2.12.1是兼容的,你们能找出问题所在吗?
有一个项目将涉及到sftp文件传输到服务器。我已经尝试使用ftp协议,并选择winscp.exe-sftp作为我的程序来录制。有事件被记录,但没有生成后,我完成了记录。 提前谢了。