我对整个编码工作还不熟悉,但我希望对ASyncTask提供一些帮助,以及如何通过通知或仅通过SD卡将其从互联网直接下载到我的手机。< / p>
我在activity_main.xml布局中已经有一个按钮:
<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" />
在我的MainActivity.Java类中,我现在只需要一个连接到字符串的按钮,并意图将其重定向到webview以下载它:
case R.id.UpdateButton:
Intent browserIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse(getString(R.string.UpdateAV)));
startActivity(browserIntent);
break;
但不是这样,我希望将文件直接下载到手机或进度条,说它正在下载到外部存储器或SD卡。
任何帮助都将不胜感激。
答案 0 :(得分:0)
这只是一个如何下载文件的示例,如果您想使用AsyncTask
,则必须在Android中为此编写等效代码,您将在doInBacground()
中执行相同的工作{1}}方法。
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
库,
你可以获得更多代码Example
你可以像这样在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);
}
}
确保您的应用具有互联网权限,为此,请将此行添加到AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>