@ZSCDumin
2019-07-10T11:44:37.000000Z
字数 3881
阅读 1100
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'
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><ImageViewandroid:id="@+id/image"android:layout_width="200dp"android:layout_height="200dp"android:layout_gravity="center"android:layout_marginTop="20dp"android:src="@mipmap/ic_launcher" /><SeekBarandroid:id="@+id/seekBar"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:padding="20dp" /><Buttonandroid:id="@+id/download"android:layout_margin="5dp"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#FF00FF"android:text="下载" /></LinearLayout>
package com.zscdumin.myapplication;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.ProgressBar;import android.widget.SeekBar;import android.widget.TextView;import android.widget.Toast;import com.liulishuo.filedownloader.BaseDownloadTask;import com.liulishuo.filedownloader.FileDownloadListener;import com.liulishuo.filedownloader.FileDownloader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.util.Date;public class MainActivity extends AppCompatActivity {private ImageView imageView;private SeekBar seekBar;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {FileDownloader.setup(this);super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = findViewById(R.id.image);seekBar = findViewById(R.id.seekBar);seekBar.setMax(100);final String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + new Date() + ".apk";button = findViewById(R.id.download);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {download(path);}});}public void download(final String path) {Log.i("TAG", "download");FileDownloader.getImpl().create("http://d1.music.126.net/dmusic/CloudMusic_official_5.4.1.284637.apk").setPath(path).setListener(new FileDownloadListener() {@Overrideprotected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {Toast.makeText(MainActivity.this, "等待中。。。", Toast.LENGTH_SHORT).show();}@Overrideprotected void connected(BaseDownloadTask task, String etag, boolean isContinue, int soFarBytes, int totalBytes) {Toast.makeText(MainActivity.this, "链接完成", Toast.LENGTH_SHORT).show();}@Overrideprotected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {seekBar.setProgress((int) ((1.0000 * soFarBytes / totalBytes) * 100));}@Overrideprotected void blockComplete(BaseDownloadTask task) {}@Overrideprotected void retry(final BaseDownloadTask task, final Throwable ex, final int retryingTimes, final int soFarBytes) {}@Overrideprotected void completed(BaseDownloadTask task) {Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_SHORT).show();seekBar.setProgress(100);// FileInputStream fis = null;// try {// fis = new FileInputStream(path);// } catch (FileNotFoundException e) {// e.printStackTrace();// }// Bitmap bitmap = BitmapFactory.decodeStream(fis);// imageView.setImageBitmap(bitmap);}@Overrideprotected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {}@Overrideprotected void error(BaseDownloadTask task, Throwable e) {Toast.makeText(MainActivity.this, "下载出错", Toast.LENGTH_SHORT).show();}@Overrideprotected void warn(BaseDownloadTask task) {}}).start();}}