好的所以我有我的应用程序90%内置一切正常但我的下载按钮。我已经被困在这几天了,所以如果有人可以帮助一个人用一些适合这个的东西。我的文件是.pkg,我从xml文件中提取文件名,这是我的按钮代码,但我不知道我在这里做错了什么。单击它时它什么都不做。 appUrl是我在xml文件中的文件名
Button b_get_book = (Button)v.findViewById(R.id.Button01);
b_get_book.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View v) {
try {
File root = Environment.getExternalStorageDirectory();
URL u = new URL("http://www.mysite.com/" + appUrl);
HttpURLConnection c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
FileOutputStream f = new FileOutputStream(new File(root, appUrl));
InputStream in = c.getInputStream();
byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = in.read(buffer)) > 0) {
f.write(buffer, 0, len1);
}
f.close();
} catch (Exception e) {
Log.d("Downloader", e.getMessage());
}
}
});
任何帮助都会很棒我一直把头发拉过来。我制作了一个非常复杂的应用程序,这很容易让我变得......如果有人可以帮助我从一个很棒的按钮帮助我一些工作代码。如果它有下载的进度条,那就更好了。这是我实际下载工作后的下一个任务。谢谢
答案 0 :(得分:0)
第一个想法是在尝试创建文件时遇到IOException。如果我是你,我首先会将当前在你的try-catch子句中的代码移动到其他地方,并测试它。然后,当它运行良好时,我会从try-catch中调用它。
此外,我建议反对在GUI线程中运行如此长的操作 - 这会使您的应用无法响应用户输入。建议采用以下方法:
public void onClick(View v) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
/* your code here*/
} catch (Exception e) {
Log.e("Downloader", e.getMessage());
}
}
}.execute();
}