[关闭]
@ZSCDumin 2019-07-10T11:44:37.000000Z 字数 3881 阅读 1100

Android文件下载(FileDownloader)

Android


参考代码:

动态申请权限(Android 6.0以上需要)

在build.gradle(project)添加

maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }

在build.gradle(app)添加

implementation 'com.liulishuo.filedownloader:library:1.7.5'

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:orientation="vertical"
  8. tools:context=".MainActivity">
  9. <ImageView
  10. android:id="@+id/image"
  11. android:layout_width="200dp"
  12. android:layout_height="200dp"
  13. android:layout_gravity="center"
  14. android:layout_marginTop="20dp"
  15. android:src="@mipmap/ic_launcher" />
  16. <SeekBar
  17. android:id="@+id/seekBar"
  18. android:layout_width="match_parent"
  19. android:layout_height="wrap_content"
  20. android:layout_marginTop="20dp"
  21. android:padding="20dp" />
  22. <Button
  23. android:id="@+id/download"
  24. android:layout_margin="5dp"
  25. android:layout_width="match_parent"
  26. android:layout_height="wrap_content"
  27. android:background="#FF00FF"
  28. android:text="下载" />
  29. </LinearLayout>
  1. package com.zscdumin.myapplication;
  2. import android.graphics.Bitmap;
  3. import android.graphics.BitmapFactory;
  4. import android.os.Environment;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.util.Log;
  8. import android.view.View;
  9. import android.widget.Button;
  10. import android.widget.ImageView;
  11. import android.widget.ProgressBar;
  12. import android.widget.SeekBar;
  13. import android.widget.TextView;
  14. import android.widget.Toast;
  15. import com.liulishuo.filedownloader.BaseDownloadTask;
  16. import com.liulishuo.filedownloader.FileDownloadListener;
  17. import com.liulishuo.filedownloader.FileDownloader;
  18. import java.io.File;
  19. import java.io.FileInputStream;
  20. import java.io.FileNotFoundException;
  21. import java.util.Date;
  22. public class MainActivity extends AppCompatActivity {
  23. private ImageView imageView;
  24. private SeekBar seekBar;
  25. private Button button;
  26. @Override
  27. protected void onCreate(Bundle savedInstanceState) {
  28. FileDownloader.setup(this);
  29. super.onCreate(savedInstanceState);
  30. setContentView(R.layout.activity_main);
  31. imageView = findViewById(R.id.image);
  32. seekBar = findViewById(R.id.seekBar);
  33. seekBar.setMax(100);
  34. final String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + new Date() + ".apk";
  35. button = findViewById(R.id.download);
  36. button.setOnClickListener(new View.OnClickListener() {
  37. @Override
  38. public void onClick(View v) {
  39. download(path);
  40. }
  41. });
  42. }
  43. public void download(final String path) {
  44. Log.i("TAG", "download");
  45. FileDownloader.getImpl().create("http://d1.music.126.net/dmusic/CloudMusic_official_5.4.1.284637.apk")
  46. .setPath(path)
  47. .setListener(new FileDownloadListener() {
  48. @Override
  49. protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {
  50. Toast.makeText(MainActivity.this, "等待中。。。", Toast.LENGTH_SHORT).show();
  51. }
  52. @Override
  53. protected void connected(BaseDownloadTask task, String etag, boolean isContinue, int soFarBytes, int totalBytes) {
  54. Toast.makeText(MainActivity.this, "链接完成", Toast.LENGTH_SHORT).show();
  55. }
  56. @Override
  57. protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {
  58. seekBar.setProgress((int) ((1.0000 * soFarBytes / totalBytes) * 100));
  59. }
  60. @Override
  61. protected void blockComplete(BaseDownloadTask task) {
  62. }
  63. @Override
  64. protected void retry(final BaseDownloadTask task, final Throwable ex, final int retryingTimes, final int soFarBytes) {
  65. }
  66. @Override
  67. protected void completed(BaseDownloadTask task) {
  68. Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_SHORT).show();
  69. seekBar.setProgress(100);
  70. // FileInputStream fis = null;
  71. // try {
  72. // fis = new FileInputStream(path);
  73. // } catch (FileNotFoundException e) {
  74. // e.printStackTrace();
  75. // }
  76. // Bitmap bitmap = BitmapFactory.decodeStream(fis);
  77. // imageView.setImageBitmap(bitmap);
  78. }
  79. @Override
  80. protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {
  81. }
  82. @Override
  83. protected void error(BaseDownloadTask task, Throwable e) {
  84. Toast.makeText(MainActivity.this, "下载出错", Toast.LENGTH_SHORT).show();
  85. }
  86. @Override
  87. protected void warn(BaseDownloadTask task) {
  88. }
  89. }).start();
  90. }
  91. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注