1.在build.gradle中添加依赖
implementation 'org.xutils:xutils:3.8.2'
2.项目中需要使用到网络权限跟存储权限,在AndroidManifest.xml中添加权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
3.布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<EditText
android:id="@+id/et_path"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="https://dldir1.qq.com/qqfile/qq/TIM2.3.2/21173/TIM2.3.2.21173.exe" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="开始下载"
android:onClick="startDownload"/>
<ProgressBar
android:id="@+id/pb"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
4.MainActivity代码
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;
import java.io.File;
public class MainActivity extends AppCompatActivity
{
EditText et_path;
ProgressBar pb;
void init()
{
pb = findViewById(R.id.pb);
et_path = findViewById(R.id.et_path);
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
x.Ext.init(this.getApplication());
}
public void startDownload(View view)
{
String path = Environment.getExternalStorageDirectory().getPath()+"/tim.exe";
RequestParams params = new RequestParams(et_path.getText().toString().trim());
params.setAutoRename(false);
params.setSaveFilePath(path);
x.http().get(params, new Callback.ProgressCallback<File>()
{
@Override
public void onSuccess(File result)
{
Toast.makeText(getApplicationContext(),"下载成功",Toast.LENGTH_LONG).show();
}
@Override
public void onError(Throwable ex, boolean isOnCallback)
{
Toast.makeText(getApplicationContext(),"下载错误",Toast.LENGTH_LONG).show();
}
@Override
public void onCancelled(CancelledException cex)
{
}
@Override
public void onFinished()
{
}
@Override
public void onWaiting()
{
}
@Override
public void onStarted()
{
}
@Override
public void onLoading(long total, long current, boolean isDownloading)
{
pb.setMax((int) total);
pb.setProgress((int) current);
}
});
}
}