Skip to content

Commit 554c5bd

Browse files
author
duyu
committed
新增判断文件是否损坏过滤
1 parent a53416f commit 554c5bd

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

library/src/main/java/com/rain/library/loader/MediaStoreHelper.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.content.ContentResolver;
55
import android.content.Context;
66
import android.database.Cursor;
7+
import android.graphics.BitmapFactory;
78
import android.os.Bundle;
89
import android.provider.MediaStore;
910
import android.support.v4.app.LoaderManager;
@@ -13,7 +14,9 @@
1314
import com.rain.library.bean.MediaData;
1415
import com.rain.library.bean.MediaDirectory;
1516
import com.rain.library.data.Data;
17+
import com.rain.library.utils.ExternalStorage;
1618
import com.rain.library.utils.MimeType;
19+
import com.rain.library.utils.Rlog;
1720

1821
import java.io.File;
1922
import java.util.ArrayList;
@@ -104,6 +107,10 @@ public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
104107
String media_directoryPath = media_path.substring(0, media_path.lastIndexOf(File.separator));
105108

106109
long media_duration = MimeType.isVideo(media_type) ? MimeType.getVideoDuration(media_path) : 0;
110+
111+
//判断文件是否损坏
112+
boolean isDamage = ExternalStorage.getInstance().checkImageIsDamage(media_width, media_path);
113+
if (isDamage) continue;
107114
MediaData mediaData = getMediaData(media_id, media_path, media_size, media_duration, mineType, media_type, media_width, media_height);
108115
MediaDirectory mediaDirectory = new MediaDirectory();
109116
mediaDirectory.setId(media_dirId);

library/src/main/java/com/rain/library/utils/ExternalStorage.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.Manifest;
44
import android.content.Context;
55
import android.content.pm.PackageManager;
6+
import android.graphics.BitmapFactory;
67
import android.os.Environment;
78
import android.os.StatFs;
89
import android.text.TextUtils;
@@ -185,4 +186,27 @@ public boolean checkStorageValid() {
185186
}
186187
return hasPermission;
187188
}
189+
190+
/**
191+
* 判断文件是否损坏
192+
*
193+
* @param width
194+
* @param media_path
195+
* @return
196+
*/
197+
public boolean checkImageIsDamage(int width, String media_path) {
198+
if (width == 0) {
199+
BitmapFactory.Options options = null;
200+
if (options == null) options = new BitmapFactory.Options();
201+
options.inJustDecodeBounds = true;
202+
BitmapFactory.decodeFile(media_path, options); //filePath代表图片路径
203+
if (options.mCancel || options.outWidth == -1 || options.outHeight == -1) {
204+
//表示图片已损毁
205+
Rlog.e("表示图片已损毁");
206+
return true;
207+
}
208+
209+
}
210+
return false;
211+
}
188212
}

0 commit comments

Comments
 (0)