Java ASyncTask-我想通过按钮从internet下载文件
我对整个编码工作还是新手,但我想得到一些关于ASyncTask的帮助,以及如何允许它通过通知或SD卡将我的应用程序从互联网直接下载到我的手机上 我在activity_main.xml布局中已经有一个按钮,它是:Java ASyncTask-我想通过按钮从internet下载文件,java,android,android-intent,download,android-asynctask,Java,Android,Android Intent,Download,Android Asynctask,我对整个编码工作还是新手,但我想得到一些关于ASyncTask的帮助,以及如何允许它通过通知或SD卡将我的应用程序从互联网直接下载到我的手机上 我在activity_main.xml布局中已经有一个按钮,它是: <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/UpdateButton" android:text="
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/UpdateButton"
android:text="@string/Update"
android:background="#6c0005"
android:textColor="#ffffff"
android:textSize="12dp" />
但与此相反,我希望文件直接下载到手机或进度条,说明它正在下载到外部存储器或SD卡
任何帮助都将不胜感激。这只是一个如何下载文件的示例,如果您想使用
AsyncTask
,您必须在Android中为此编写一个等效的代码,在该代码中,您将在doInBacground()
方法中执行相同的工作
public class DownloadTest {
public static void main(String[] args) {
Thread thread = new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
try {
dowanloadFile(new URL("some url"), new File("some file"));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
thread.start();
}
private static void dowanloadFile(URL url, File file){
try {
FileUtils.copyURLToFile(url, file );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
此代码使用commons-io-2.4.jar
库
你可以给她多一点密码
您可以在SD卡上获得下载路径,如下所示
final String path = Environment.getExternalStorageDirectory().getAbsolutePath();
使用AsycnTask
会是这样的
private class MtDownloadTask extends AsyncTask<Void, Void ,Void>{
URL someUrl = new URL("your url String"); //
File someFile = new File("your file, where you want to save the data");
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
return null;
FileUtils.copyURLToFile(url, file);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
}
可能的副本谢谢你的回答。我要把这个放在主活动中吗?或者一个不同的java类。另外,我将把.jar文件放在哪里?我不确定。@JRMVN您必须将jar文件添加到项目的libs目录中。我已经为asycTask添加了代码,您可以将其作为MainActivity的内部类,也可以将其作为单独的类,以适合您的方式。谢谢Pankaj!非常感谢您的快速帮助。我会让你知道我是如何继续的:)。我已经将第一个代码添加到我的主activity java类中,我还将.jar文件添加到libs文件夹中。我是否也应该将ASyncTask添加到MainActivity.java类中?当我这样做时,它会突出显示“onPreExecute”和“onPostExecute”红色。另外,“publicstaticvoidmain(String[]args){”会保持红色,除非它在代码的开头更改为“publicstaticclassdownloadtest{”我在这里很困惑,抱歉。
private class MtDownloadTask extends AsyncTask<Void, Void ,Void>{
URL someUrl = new URL("your url String"); //
File someFile = new File("your file, where you want to save the data");
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
return null;
FileUtils.copyURLToFile(url, file);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
}
<uses-permission android:name="android.permission.INTERNET"/>