Commit e2534caccf4ce49f7b8c320b4859ef5f7a5bb71c

Authored by 韩亚云
1 parent aa8ba763

图片预览长按保存事件优化

app/strike/src/main/java/com/cnlive/strike/imgutil/ImgActivity.java
@@ -94,6 +94,7 @@ public class ImgActivity extends AppCompatActivity { @@ -94,6 +94,7 @@ public class ImgActivity extends AppCompatActivity {
94 findViewById(R.id.pre_btn).setOnClickListener(view -> { 94 findViewById(R.id.pre_btn).setOnClickListener(view -> {
95 PreViewImgData data = new PreViewImgData(); 95 PreViewImgData data = new PreViewImgData();
96 data.setType("1"); 96 data.setType("1");
  97 + data.setUserId("10514343");
97 PreViewImgInfo cuData = new PreViewImgInfo(); 98 PreViewImgInfo cuData = new PreViewImgInfo();
98 cuData.setImgUrl("https://b-ssl.duitang.com/uploads/item/201505/09/20150509221719_kyNrM.jpeg"); 99 cuData.setImgUrl("https://b-ssl.duitang.com/uploads/item/201505/09/20150509221719_kyNrM.jpeg");
99 data.setCurrPrewInfo(cuData); 100 data.setCurrPrewInfo(cuData);
@@ -107,6 +108,10 @@ public class ImgActivity extends AppCompatActivity { @@ -107,6 +108,10 @@ public class ImgActivity extends AppCompatActivity {
107 cuData2.setImgUrl("https://b-ssl.duitang.com/uploads/item/201505/11/20150511122951_MAwVZ.jpeg"); 108 cuData2.setImgUrl("https://b-ssl.duitang.com/uploads/item/201505/11/20150511122951_MAwVZ.jpeg");
108 preViewImgInfos.add(cuData2); 109 preViewImgInfos.add(cuData2);
109 110
  111 + PreViewImgInfo preViewImgInfo = new PreViewImgInfo();
  112 + preViewImgInfo.setImgUrl("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1583074722432&di=7ba0e34112d2c6e3b870fa7ce18827b1&imgtype=0&src=http%3A%2F%2Fm.dazhuanglawyer.com%2Ftupian%2F20190904%2F201909041739423115.jpg");
  113 + preViewImgInfos.add(preViewImgInfo);
  114 +
110 data.setPicInfoList(preViewImgInfos); 115 data.setPicInfoList(preViewImgInfos);
111 data.setFriend(true); 116 data.setFriend(true);
112 data.setCollection(true); 117 data.setCollection(true);
@@ -224,7 +229,7 @@ public class ImgActivity extends AppCompatActivity { @@ -224,7 +229,7 @@ public class ImgActivity extends AppCompatActivity {
224 229
225 // .asSquare()//正方形 230 // .asSquare()//正方形
226 findViewById(R.id.down).setOnClickListener(view -> { 231 findViewById(R.id.down).setOnClickListener(view -> {
227 - ImageLoader.saveImageIntoGallery(new DownLoadImageService(ImgActivity.this, URL1, true, "lala", new ImageDownLoadCallBack() { 232 + ImageLoader.saveImageIntoGallery(new DownLoadImageService(ImgActivity.this, URL1, false, "lala", new ImageDownLoadCallBack() {
228 233
229 @Override 234 @Override
230 public void onDownLoadSuccess(Bitmap bitmap) { 235 public void onDownLoadSuccess(Bitmap bitmap) {
cloud/user/src/main/java/com/cnlive/cloud/user/preview/ui/widget/DownLoadImageService.java
@@ -78,7 +78,7 @@ public class DownLoadImageService implements Runnable { @@ -78,7 +78,7 @@ public class DownLoadImageService implements Runnable {
78 inStream.close(); 78 inStream.close();
79 outputStream.close(); 79 outputStream.close();
80 80
81 - context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + newFile.getAbsolutePath()))); 81 + context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(newFile.getAbsolutePath())));
82 //TODO 文件缓存已经完成 待优化~!! 82 //TODO 文件缓存已经完成 待优化~!!
83 } catch (Exception e) { 83 } catch (Exception e) {
84 Log.e("ImageDownloadService", "Exception ", e); 84 Log.e("ImageDownloadService", "Exception ", e);
core/app_qr/src/main/java/com/cnlive/cloud/moudle/qr/frame/view/GenerateQRView.java
@@ -189,7 +189,7 @@ public class GenerateQRView extends BaseView { @@ -189,7 +189,7 @@ public class GenerateQRView extends BaseView {
189 // e.printStackTrace(); 189 // e.printStackTrace();
190 // } 190 // }
191 // 最后通知图库更新 191 // 最后通知图库更新
192 - context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file.getAbsolutePath()))); 192 + context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(file.getAbsolutePath())));
193 193
194 AlertUtil.showSuccessToast(mContext, "保存成功"); 194 AlertUtil.showSuccessToast(mContext, "保存成功");
195 195
core/imageload/src/main/java/com/cnlive/core/imageload/preview/presenter/ProcessHtmlPresenter.java
@@ -321,7 +321,7 @@ public class ProcessHtmlPresenter extends BasePresenter<ProcessHtmlView> { @@ -321,7 +321,7 @@ public class ProcessHtmlPresenter extends BasePresenter<ProcessHtmlView> {
321 inStream.close(); 321 inStream.close();
322 outputStream.close(); 322 outputStream.close();
323 323
324 - context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + newFile.getAbsolutePath()))); 324 + context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(newFile.getAbsolutePath())));
325 ifViewAttached(view -> view.showSucessfulMessage("保存成功")); 325 ifViewAttached(view -> view.showSucessfulMessage("保存成功"));
326 context.finish(); 326 context.finish();
327 } catch (Exception e) { 327 } catch (Exception e) {
core/imageload/src/main/java/com/cnlive/core/imageload/preview/view/ProcessHtmlView.java
@@ -149,7 +149,7 @@ public class ProcessHtmlView extends BaseView { @@ -149,7 +149,7 @@ public class ProcessHtmlView extends BaseView {
149 if (localContentValues != null) 149 if (localContentValues != null)
150 localContentResolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, localContentValues); 150 localContentResolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, localContentValues);
151 } 151 }
152 - mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + s))); 152 + mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(s)));
153 } 153 }
154 } catch (Exception e) { 154 } catch (Exception e) {
155 e.printStackTrace(); 155 e.printStackTrace();
@@ -273,7 +273,7 @@ public class ProcessHtmlView extends BaseView { @@ -273,7 +273,7 @@ public class ProcessHtmlView extends BaseView {
273 file.getAbsolutePath(), newFile.getName(), null); 273 file.getAbsolutePath(), newFile.getName(), null);
274 274
275 } 275 }
276 - context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + newFile.getAbsolutePath()))); 276 + context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(newFile.getAbsolutePath())));
277 showSucessfulMessage("保存成功"); 277 showSucessfulMessage("保存成功");
278 } catch (Exception e) { 278 } catch (Exception e) {
279 if (e != null && e.getMessage() != null) 279 if (e != null && e.getMessage() != null)
core/imageload/src/main/java/com/cnlive/core/imageload/util/DownLoadImageService.java
@@ -30,6 +30,7 @@ public class DownLoadImageService implements Runnable{ @@ -30,6 +30,7 @@ public class DownLoadImageService implements Runnable{
30 private File currentFile; 30 private File currentFile;
31 private String fileName; 31 private String fileName;
32 32
  33 + //是否加入系统图库
33 private boolean isSetMediaStore; 34 private boolean isSetMediaStore;
34 35
35 public DownLoadImageService(Context context, String url,boolean isSetMediaStore , String fileName, ImageDownLoadCallBack callBack) { 36 public DownLoadImageService(Context context, String url,boolean isSetMediaStore , String fileName, ImageDownLoadCallBack callBack) {
@@ -67,9 +68,7 @@ public class DownLoadImageService implements Runnable{ @@ -67,9 +68,7 @@ public class DownLoadImageService implements Runnable{
67 68
68 public void saveImageToGallery(Context context, Bitmap bmp) { 69 public void saveImageToGallery(Context context, Bitmap bmp) {
69 // 首先保存图片 70 // 首先保存图片
70 -  
71 File file = Build.VERSION.SDK_INT > 28?context.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsoluteFile():Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsoluteFile();//注意小米手机必须这样获得public绝对路径 71 File file = Build.VERSION.SDK_INT > 28?context.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsoluteFile():Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsoluteFile();//注意小米手机必须这样获得public绝对路径
72 -  
73 File appDir = new File(file ,fileName); 72 File appDir = new File(file ,fileName);
74 if (!appDir.exists()) { 73 if (!appDir.exists()) {
75 appDir.mkdirs(); 74 appDir.mkdirs();
@@ -99,7 +98,6 @@ public class DownLoadImageService implements Runnable{ @@ -99,7 +98,6 @@ public class DownLoadImageService implements Runnable{
99 if(isSetMediaStore){ 98 if(isSetMediaStore){
100 setMediaDtore(fileName); 99 setMediaDtore(fileName);
101 } 100 }
102 -  
103 // 最后通知图库更新 101 // 最后通知图库更新
104 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, 102 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
105 Uri.fromFile(new File(currentFile.getPath())))); 103 Uri.fromFile(new File(currentFile.getPath()))));
core/imageload/src/main/java/com/cnlive/core/ui/presenter/PreViewImagePresenter.java
@@ -170,10 +170,9 @@ public class PreViewImagePresenter extends BasePresenter<PreViewImageView> { @@ -170,10 +170,9 @@ public class PreViewImagePresenter extends BasePresenter<PreViewImageView> {
170 170
171 private void collection(PreViewImageActivity context, String imagePath, PreViewImgData previewData) { 171 private void collection(PreViewImageActivity context, String imagePath, PreViewImgData previewData) {
172 if (previewData == null) return; 172 if (previewData == null) return;
173 - String sid = UserService.getUid(context);  
174 Map<String, String> requestMap = new HashMap<>(); 173 Map<String, String> requestMap = new HashMap<>();
175 requestMap.put("appId", AppConfig.getAppId()); 174 requestMap.put("appId", AppConfig.getAppId());
176 - requestMap.put("sid", sid); 175 + requestMap.put("sid", previewData.getUserId());
177 requestMap.put("type", previewData.getType()); 176 requestMap.put("type", previewData.getType());
178 requestMap.put("img", imagePath); 177 requestMap.put("img", imagePath);
179 178
@@ -213,86 +212,18 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; { @@ -213,86 +212,18 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; {
213 212
214 @Override 213 @Override
215 public void onSuccess(BaseResult data) { 214 public void onSuccess(BaseResult data) {
216 - ifViewAttached(view -> view.showSucessfulMessage("收藏成功")); 215 + if(getView() != null) getView().showSucessfulMessage("收藏成功");
  216 +// ifViewAttached(view -> view.showSucessfulMessage("收藏成功"));
217 } 217 }
218 218
219 @Override 219 @Override
220 public void onFailure(String errCode, String errMsg, Exception e) { 220 public void onFailure(String errCode, String errMsg, Exception e) {
221 - ifViewAttached(view -> view.showMessage(errMsg)); 221 + if(getView() != null) getView().showMessage(errMsg);
  222 +// ifViewAttached(view -> view.showMessage(errMsg));
222 } 223 }
223 }); 224 });
224 } 225 }
225 226
226 -  
227 - /**  
228 - * 保存图片  
229 - *  
230 - * @param url  
231 - */  
232 - public void savePicture(Activity context, String url) {  
233 - if(getView() != null) getView().hideLoading();  
234 -// ifViewAttached(view -> view.hideLoading());  
235 - if (TextUtils.isEmpty(url)) {  
236 - if(getView() != null) getView().showMessage("非法图片地址");  
237 -// ifViewAttached(view -> view.showMessage("非法图片地址"));  
238 - return;  
239 - }  
240 - if (FileUtils.isFileExists(url)) {  
241 -// 本地图片 做copy操作  
242 - if(getView() != null) getView().saveLocalImg(url);  
243 -// ifViewAttached(view -> view.saveLocalImg(url));  
244 - } else {  
245 - if (!url.contains("http")) {  
246 - if(getView() != null) getView().showMessage("非法图片地址");  
247 -// ifViewAttached(view -> view.showMessage("非法图片地址"));  
248 - return;  
249 - }  
250 - Observable.create(new ObservableOnSubscribe<String>() {  
251 - @Override  
252 - public void subscribe(ObservableEmitter<String> emitter) throws Exception {  
253 - if (url.contains("http")) {  
254 - File file = Glide.with(context).asFile().load(url).submit().get();  
255 - if (file != null && file.exists() && file.length() > 0) {  
256 - String path = file.getAbsolutePath();  
257 - emitter.onNext(path);  
258 - } else {  
259 - emitter.onError(new Throwable("非法图片地址"));  
260 - }  
261 - } else {  
262 - emitter.onError(new Throwable("非法图片地址"));  
263 - }  
264 - }  
265 - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<String>() {  
266 - @Override  
267 - public void onSubscribe(Disposable d) {  
268 -  
269 - }  
270 -  
271 - @Override  
272 - public void onNext(String s) {  
273 - if (!TextUtils.isEmpty(s)) {  
274 - if(getView() != null) getView().saveLocalImg(s);  
275 -// ifViewAttached(view -> view.saveLocalImg(s));  
276 - } else {  
277 - if(getView() != null) getView().showMessage("数据异常");  
278 -// ifViewAttached(view -> view.showMessage("数据异常"));  
279 - }  
280 - }  
281 -  
282 - @Override  
283 - public void onError(Throwable e) {  
284 - if(getView() != null) getView().showMessage(e.getMessage());  
285 -// ifViewAttached(view -> view.showMessage(e.getMessage()));  
286 - }  
287 -  
288 - @Override  
289 - public void onComplete() {  
290 -  
291 - }  
292 - });  
293 - }  
294 - }  
295 -  
296 /** 227 /**
297 * 保存视频 228 * 保存视频
298 * 229 *
@@ -332,7 +263,7 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; { @@ -332,7 +263,7 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; {
332 outputStream.write(buffer2, 0, byteread); 263 outputStream.write(buffer2, 0, byteread);
333 inStream.close(); 264 inStream.close();
334 outputStream.close(); 265 outputStream.close();
335 - activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + newFile.getAbsolutePath()))); 266 + activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(newFile.getAbsolutePath())));
336 ifViewAttached(view -> view.showSucessfulMessage("保存成功")); 267 ifViewAttached(view -> view.showSucessfulMessage("保存成功"));
337 activity.finish(); 268 activity.finish();
338 } catch (Exception e) { 269 } catch (Exception e) {
@@ -348,12 +279,11 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; { @@ -348,12 +279,11 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; {
348 * @param imgUrl 279 * @param imgUrl
349 */ 280 */
350 public void isScan(Activity activity,String imgUrl,int position) { 281 public void isScan(Activity activity,String imgUrl,int position) {
351 - if (TextUtils.isEmpty(imgUrl)) {  
352 - return;  
353 - }  
354 - if (!NetworkUtil.isConnectInternet(activity)) { 282 + if (TextUtils.isEmpty(imgUrl) || !NetworkUtil.isConnectInternet(activity)) {
  283 + if(getView() != null) getView().showDialog(position,false);
355 return; 284 return;
356 } 285 }
  286 +
357 Observable.create(new ObservableOnSubscribe<String>() { 287 Observable.create(new ObservableOnSubscribe<String>() {
358 @Override 288 @Override
359 public void subscribe(ObservableEmitter<String> emitter) throws Exception { 289 public void subscribe(ObservableEmitter<String> emitter) throws Exception {
@@ -483,14 +413,19 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; { @@ -483,14 +413,19 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; {
483 if (getView()!=null)getView().processQrContent(qrContent); 413 if (getView()!=null)getView().processQrContent(qrContent);
484 // ifViewAttached(view -> view.processQrContent(qrContent)); 414 // ifViewAttached(view -> view.processQrContent(qrContent));
485 } else { 415 } else {
486 - ifViewAttached(view -> view.showMessage("未识别二维码")); 416 + if(getView() != null) getView().showMessage("未识别二维码");
  417 +// ifViewAttached(view -> view.showMessage("未识别二维码"));
487 } 418 }
488 } 419 }
489 420
490 @Override 421 @Override
491 public void onError(Throwable e) { 422 public void onError(Throwable e) {
492 - ifViewAttached(view -> view.hideLoading());  
493 - ifViewAttached(view -> view.showMessage(e.getMessage())); 423 + if(getView() != null){
  424 + getView().hideLoading();
  425 + getView().showMessage(e.getMessage());
  426 + }
  427 +// ifViewAttached(view -> view.hideLoading());
  428 +// ifViewAttached(view -> view.showMessage(e.getMessage()));
494 } 429 }
495 430
496 @Override 431 @Override
core/imageload/src/main/java/com/cnlive/core/ui/view/PreViewImageView.java
@@ -6,11 +6,12 @@ import android.app.Dialog; @@ -6,11 +6,12 @@ import android.app.Dialog;
6 import android.content.ContentResolver; 6 import android.content.ContentResolver;
7 import android.content.ContentValues; 7 import android.content.ContentValues;
8 import android.content.Intent; 8 import android.content.Intent;
  9 +import android.graphics.Bitmap;
9 import android.net.Uri; 10 import android.net.Uri;
10 -import android.os.Environment; 11 +import android.os.Handler;
  12 +import android.os.Message;
11 import android.provider.MediaStore; 13 import android.provider.MediaStore;
12 import android.text.TextUtils; 14 import android.text.TextUtils;
13 -import android.util.Log;  
14 import android.view.Gravity; 15 import android.view.Gravity;
15 import android.view.View; 16 import android.view.View;
16 import android.view.ViewGroup; 17 import android.view.ViewGroup;
@@ -20,16 +21,17 @@ import android.widget.ImageView; @@ -20,16 +21,17 @@ import android.widget.ImageView;
20 import com.cnlive.cloud.moudle.qr.uitl.IdentifyTheQRCodeCallback; 21 import com.cnlive.cloud.moudle.qr.uitl.IdentifyTheQRCodeCallback;
21 import com.cnlive.cloud.moudle.qr.uitl.QrContentUtil; 22 import com.cnlive.cloud.moudle.qr.uitl.QrContentUtil;
22 import com.cnlive.core.imageload.R; 23 import com.cnlive.core.imageload.R;
  24 +import com.cnlive.core.imageload.callback.ImageDownLoadCallBack;
  25 +import com.cnlive.core.imageload.loader.ImageLoader;
23 import com.cnlive.core.imageload.preview.router.PreviewRouters; 26 import com.cnlive.core.imageload.preview.router.PreviewRouters;
24 import com.cnlive.core.imageload.preview.widget.CustomTipDialog; 27 import com.cnlive.core.imageload.preview.widget.CustomTipDialog;
25 import com.cnlive.core.imageload.preview.widget.DownloadUtil; 28 import com.cnlive.core.imageload.preview.widget.DownloadUtil;
  29 +import com.cnlive.core.imageload.util.DownLoadImageService;
26 import com.cnlive.core.imagepreview.listener.OnItemLongPressListener; 30 import com.cnlive.core.imagepreview.listener.OnItemLongPressListener;
27 import com.cnlive.core.libs.base.frame.view.BaseView; 31 import com.cnlive.core.libs.base.frame.view.BaseView;
28 import com.cnlive.core.libs.base.interfaces.OnPermissionResponseListener; 32 import com.cnlive.core.libs.base.interfaces.OnPermissionResponseListener;
29 import com.cnlive.core.libs.base.util.AlertUtil; 33 import com.cnlive.core.libs.base.util.AlertUtil;
30 -import com.cnlive.core.libs.base.util.FileTypeUtil;  
31 import com.cnlive.core.libs.base.util.FileUtils; 34 import com.cnlive.core.libs.base.util.FileUtils;
32 -import com.cnlive.core.libs.base.util.MD5Util;  
33 import com.cnlive.core.ui.activity.PreViewImageActivity; 35 import com.cnlive.core.ui.activity.PreViewImageActivity;
34 import com.cnlive.core.ui.model.PreViewImgData; 36 import com.cnlive.core.ui.model.PreViewImgData;
35 import com.cnlive.core.ui.model.PreViewImgInfo; 37 import com.cnlive.core.ui.model.PreViewImgInfo;
@@ -37,12 +39,10 @@ import com.cnlive.media.picker.entity.Media; @@ -37,12 +39,10 @@ import com.cnlive.media.picker.entity.Media;
37 import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; 39 import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
38 40
39 import java.io.File; 41 import java.io.File;
40 -import java.io.FileInputStream;  
41 -import java.io.FileOutputStream;  
42 -import java.io.InputStream;  
43 import java.util.ArrayList; 42 import java.util.ArrayList;
44 import java.util.List; 43 import java.util.List;
45 44
  45 +import androidx.annotation.NonNull;
46 import io.reactivex.Observable; 46 import io.reactivex.Observable;
47 import io.reactivex.ObservableEmitter; 47 import io.reactivex.ObservableEmitter;
48 import io.reactivex.ObservableOnSubscribe; 48 import io.reactivex.ObservableOnSubscribe;
@@ -61,6 +61,17 @@ public class PreViewImageView extends BaseView { @@ -61,6 +61,17 @@ public class PreViewImageView extends BaseView {
61 private List<PreViewImgInfo> preViewImgList = new ArrayList<>(); 61 private List<PreViewImgInfo> preViewImgList = new ArrayList<>();
62 private Dialog dialog; 62 private Dialog dialog;
63 private CustomTipDialog loadingDiaog; 63 private CustomTipDialog loadingDiaog;
  64 + @SuppressLint("HandlerLeak")
  65 + private Handler handler = new Handler(){
  66 + @Override
  67 + public void handleMessage(@NonNull Message msg) {
  68 + switch (msg.what){
  69 + case 0:
  70 + showSucessfulMessage(msg.obj.toString());
  71 + break;
  72 + }
  73 + }
  74 + };
64 75
65 public PreViewImageView(PreViewImageActivity activity) { 76 public PreViewImageView(PreViewImageActivity activity) {
66 this.activity = activity; 77 this.activity = activity;
@@ -74,9 +85,7 @@ public class PreViewImageView extends BaseView { @@ -74,9 +85,7 @@ public class PreViewImageView extends BaseView {
74 showError(); 85 showError();
75 } 86 }
76 87
77 - PreViewImgInfo preViewImgInfo = new PreViewImgInfo();  
78 - preViewImgInfo.setImgUrl("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1583074722432&di=7ba0e34112d2c6e3b870fa7ce18827b1&imgtype=0&src=http%3A%2F%2Fm.dazhuanglawyer.com%2Ftupian%2F20190904%2F201909041739423115.jpg");  
79 - activity.data.getPicInfoList().add(preViewImgInfo); 88 +
80 if (activity.type.equals("1")) { 89 if (activity.type.equals("1")) {
81 preViewImgList = activity.data.getPicInfoList(); 90 preViewImgList = activity.data.getPicInfoList();
82 if (preViewImgList.size() == 1) { 91 if (preViewImgList.size() == 1) {
@@ -103,7 +112,6 @@ public class PreViewImageView extends BaseView { @@ -103,7 +112,6 @@ public class PreViewImageView extends BaseView {
103 .imageData(activity.picList) 112 .imageData(activity.picList)
104 .playExitAnim(false); 113 .playExitAnim(false);
105 activity.binding.imagePre.watch(activity.position); 114 activity.binding.imagePre.watch(activity.position);
106 -  
107 activity.binding.imagePre.setOnItemLongPressListener(new OnItemLongPressListener() { 115 activity.binding.imagePre.setOnItemLongPressListener(new OnItemLongPressListener() {
108 @Override 116 @Override
109 public boolean onItemLongPress(int position, ImageView imageView) { 117 public boolean onItemLongPress(int position, ImageView imageView) {
@@ -111,7 +119,6 @@ public class PreViewImageView extends BaseView { @@ -111,7 +119,6 @@ public class PreViewImageView extends BaseView {
111 @Override 119 @Override
112 public void onSuccess(String[] permissions) { 120 public void onSuccess(String[] permissions) {
113 activity.getPresenter().isScan(activity,activity.picList.get(position),position); 121 activity.getPresenter().isScan(activity,activity.picList.get(position),position);
114 -  
115 } 122 }
116 123
117 @Override 124 @Override
@@ -147,7 +154,6 @@ public class PreViewImageView extends BaseView { @@ -147,7 +154,6 @@ public class PreViewImageView extends BaseView {
147 dialog.findViewById(R.id.share_friend).setOnClickListener(view -> { 154 dialog.findViewById(R.id.share_friend).setOnClickListener(view -> {
148 dialog.dismiss(); 155 dialog.dismiss();
149 activity.getPresenter().shareFriendLife(activity, "friends", TextUtils.isEmpty(preViewImgList.get(position).getImgUrl()) ? preViewImgList.get(position).getImgUrl() : preViewImgList.get(position).getImgUrl()); 156 activity.getPresenter().shareFriendLife(activity, "friends", TextUtils.isEmpty(preViewImgList.get(position).getImgUrl()) ? preViewImgList.get(position).getImgUrl() : preViewImgList.get(position).getImgUrl());
150 -  
151 }); 157 });
152 dialog.findViewById(R.id.share_cirfriend).setOnClickListener(view -> { 158 dialog.findViewById(R.id.share_cirfriend).setOnClickListener(view -> {
153 dialog.dismiss(); 159 dialog.dismiss();
@@ -160,7 +166,7 @@ public class PreViewImageView extends BaseView { @@ -160,7 +166,7 @@ public class PreViewImageView extends BaseView {
160 dialog.findViewById(R.id.save_picture).setOnClickListener(view -> { 166 dialog.findViewById(R.id.save_picture).setOnClickListener(view -> {
161 dialog.dismiss(); 167 dialog.dismiss();
162 if (activity.data.getType().equals("1")) { 168 if (activity.data.getType().equals("1")) {
163 - activity.getPresenter().savePicture(activity, TextUtils.isEmpty(preViewImgList.get(position).getImgUrl()) ? preViewImgList.get(position).getImgUrl() : preViewImgList.get(position).getImgUrl()); 169 + savePicture(TextUtils.isEmpty(preViewImgList.get(position).getImgUrl()) ? preViewImgList.get(position).getImgUrl() : preViewImgList.get(position).getImgUrl());
164 } else if (activity.data.getType().equals("1")) { 170 } else if (activity.data.getType().equals("1")) {
165 activity.getPresenter().saveVideo(activity, TextUtils.isEmpty(preViewImgList.get(position).getImgUrl()) ? preViewImgList.get(position).getImgUrl() : preViewImgList.get(position).getImgUrl()); 171 activity.getPresenter().saveVideo(activity, TextUtils.isEmpty(preViewImgList.get(position).getImgUrl()) ? preViewImgList.get(position).getImgUrl() : preViewImgList.get(position).getImgUrl());
166 } 172 }
@@ -211,46 +217,27 @@ public class PreViewImageView extends BaseView { @@ -211,46 +217,27 @@ public class PreViewImageView extends BaseView {
211 } 217 }
212 218
213 /** 219 /**
214 - * 复制本地图片到指定文件夹下  
215 - *  
216 - * @param imagePath 220 + * 保存图片
  221 + * @param url
217 */ 222 */
218 - public void saveLocalImg(String imagePath) {  
219 - File file = new File(imagePath);  
220 - try {  
221 - String md5 = MD5Util.getMD5(file);  
222 - InputStream inStream = new FileInputStream(file); //读入原文件  
223 - File appDir = new File(Environment.getExternalStorageDirectory(), "strike");  
224 - if (!appDir.exists()) appDir.mkdir();  
225 -  
226 - String type = FileTypeUtil.getFileType(file.getAbsolutePath(), true);  
227 - String extension;//初始文件扩展名  
228 - if (TextUtils.isEmpty(type)) {  
229 - extension = ".jpg";  
230 - } else {  
231 - extension = "." + type; 223 + public void savePicture(String url) {
  224 + ImageLoader.saveImageIntoGallery(new DownLoadImageService(activity, url, false, "strike", new ImageDownLoadCallBack() {
  225 + @Override
  226 + public void onDownLoadSuccess(Bitmap bitmap) {
  227 + Message message = new Message();
  228 + message.what = 0;
  229 + message.obj = "保存成功";
  230 + handler.sendMessage(message);
232 } 231 }
233 232
234 - File newFile = new File(appDir, md5 + extension);  
235 - FileOutputStream outputStream = new FileOutputStream(newFile);  
236 -  
237 - int byteread = 0;  
238 - byte[] buffer2 = new byte[1444];  
239 - while ((byteread = inStream.read(buffer2)) != -1)  
240 - outputStream.write(buffer2, 0, byteread);  
241 - inStream.close();  
242 - outputStream.close();  
243 - if (newFile != null) {  
244 - MediaStore.Images.Media.insertImage(activity.getContentResolver(),  
245 - file.getAbsolutePath(), newFile.getName(), null);  
246 - 233 + @Override
  234 + public void onDownLoadFailed() {
  235 + Message message = new Message();
  236 + message.what = 0;
  237 + message.obj = "保存出错";
  238 + handler.sendMessage(message);
247 } 239 }
248 - activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + newFile.getAbsolutePath())));  
249 - showSucessfulMessage("保存成功");  
250 - } catch (Exception e) {  
251 - if (e != null && e.getMessage() != null)  
252 - Log.e("保存图片异常", e.getMessage());  
253 - } 240 + }));
254 } 241 }
255 242
256 /** 243 /**
@@ -312,7 +299,7 @@ public class PreViewImageView extends BaseView { @@ -312,7 +299,7 @@ public class PreViewImageView extends BaseView {
312 if (localContentValues != null) 299 if (localContentValues != null)
313 localContentResolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, localContentValues); 300 localContentResolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, localContentValues);
314 } 301 }
315 - activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + s))); 302 + activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(s)));
316 } 303 }
317 } catch (Exception e) { 304 } catch (Exception e) {
318 e.printStackTrace(); 305 e.printStackTrace();
@@ -362,8 +349,9 @@ public class PreViewImageView extends BaseView { @@ -362,8 +349,9 @@ public class PreViewImageView extends BaseView {
362 hideLoading(); 349 hideLoading();
363 if (!isIdentify) { 350 if (!isIdentify) {
364 showMessage(message); 351 showMessage(message);
  352 + }else {
  353 + if (activity != null) activity.finish();
365 } 354 }
366 - if (activity != null) activity.finish();  
367 } 355 }
368 }); 356 });
369 } 357 }