- 这里的demo是一个通过下载地址下载图片文件到手机本地,并在Activity中展示这种图片的例子。
布局
<?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:gravity="center_horizontal"
android:orientation="vertical"
tools:context="com.example.downFile.MainActivity">
<ImageView
android:id="@+id/iv_main"
android:layout_width="300dp"
android:layout_height="300dp"
android:src="@color/colorAccent"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮"
android:onClick="onClick"/>
</LinearLayout>
Activity
package com.example.downFile;
import android.app.DownloadManager;
import android.content.Context;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.ImageView;
import com.example.downFile.service.DownLoadReceiver;
import java.io.File;
public class MainActivity extends AppCompatActivity {
private String mTag = getClass().getSimpleName();
private ImageView mIvMain;
private String mDownLoadPath = "https://www.baidu.com/img/bd_logo1.png";
private String mFileName = "12.jpg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mIvMain = findViewById(R.id.iv_main);
}
public void onClick(View v) {
if (FileUtils.initPictureDir()) {
FileUtils.deDuplication(new File(FileUtils.PICTURE_DIR, mFileName));
downPciture();
} else {
Log.d(mTag, "目录初始化失败");
}
}
private void downPciture() {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(mDownLoadPath));
request.setAllowedOverRoaming(false);
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
String mimeString = mimeTypeMap.getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(mDownLoadPath));
request.setMimeType(mimeString);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
request.setVisibleInDownloadsUi(true);
request.setDestinationInExternalPublicDir(TheApplication.getContext().getPackageName()
+ File.separator + "yunli" + File.separator, mFileName);
DownloadManager downloadManager = (DownloadManager) TheApplication.getContext()
.getSystemService(Context.DOWNLOAD_SERVICE);
long taskId = downloadManager.enqueue(request);
DownLoadReceiver downLoadReceiver = new DownLoadReceiver(TheApplication.getContext(),
downloadManager, taskId, mFileName, mIvMain);
registerReceiver(<