package com.tejia.lijin.app.ui.dialog;
|
|
import android.Manifest;
|
import android.app.Activity;
|
import android.app.Dialog;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.media.MediaScannerConnection;
|
import android.net.Uri;
|
import android.os.Environment;
|
import android.view.Gravity;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup.LayoutParams;
|
import android.view.WindowManager;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.Toast;
|
|
import com.wpc.library.util.common.StringUtils;
|
import com.wpc.library.util.security.MD5Utils;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.callBack.GeneralSingelCallback;
|
import com.tejia.lijin.app.util.PermissionsActivity;
|
import com.tejia.lijin.app.util.PermissionsChecker;
|
import com.tejia.lijin.app.util.Tools;
|
import com.tejia.lijin.app.util.clipboard.ClipboardUtil;
|
import com.tejia.lijin.app.util.share.ShareImageUtil;
|
import com.ysh.wpc.appupdate.download.DownLoadFile;
|
import com.ysh.wpc.appupdate.download.FileUtils;
|
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.FileNotFoundException;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class SendCircleShareDialog extends Dialog {
|
|
public final static int PLATFORM_WX = 0;
|
public final static int PLATFORM_WX_CIRCLE = 1;
|
public final static int PLATFORM_QQ = 2;
|
public final static int PLATFORM_QZONE = 3;
|
public final static int PLATFORM_SINA = 4;
|
|
public SendCircleShareDialog(Context context) {
|
super(context);
|
}
|
|
public SendCircleShareDialog(Context context, int theme) {
|
super(context, theme);
|
}
|
|
|
public static class Builder {
|
private Activity context;
|
private List<String> shareImages = null;
|
private ShapeLoadingDialog pd = null;
|
private String copyText;//需要复制的文本
|
|
public Builder setShareImages(List<String> urlList) {
|
this.shareImages = urlList;
|
return this;
|
}
|
|
public Builder setCopyText(String copyText) {
|
this.copyText = copyText;
|
return this;
|
}
|
|
private PermissionsChecker mPermissionsChecker; // 权限检测器
|
private GeneralSingelCallback singelCallback;//通知activity 点击了微信
|
|
|
static final String[] PERMISSIONS = new String[]{
|
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
private static final int REQUEST_CODE = 0; // 请求码
|
|
private void startPermissionsActivity() {
|
PermissionsActivity.startActivityForResult(context, REQUEST_CODE, PERMISSIONS);
|
}
|
|
public Builder(Activity context) {
|
this.context = context;
|
}
|
|
private void downloadImages(final View view, List<String> imgList, final IPrepareResult listener) {
|
String path = Environment.getExternalStorageDirectory()
|
+ "/rebateshare";
|
final File storageDir = new File(path);
|
//清空分享临时目录
|
FileUtils.deleteDirectory(storageDir);
|
|
//创建临时目录
|
if (!storageDir.exists())
|
storageDir.mkdirs();
|
if (!pd.isShowing())
|
pd.show();
|
List<String> filePathList = new ArrayList<>();
|
for (String url : imgList) {
|
String fileName = MD5Utils.getMD532(url) + ".png";
|
filePathList.add(storageDir.getPath() + "/" + fileName);
|
}
|
|
try {
|
//下载图片
|
new DownLoadFile().downloadMultiImages(imgList, filePathList, context, new DownLoadFile.FileDownLoadListener() {
|
@Override
|
public void finish(final List<File> fileList) {
|
view.post(new Runnable() {
|
@Override
|
public void run() {
|
if (pd.isShowing())
|
pd.dismiss();
|
ArrayList<Uri> uriList = new ArrayList<>();
|
for (File file : fileList)
|
if (file != null)
|
uriList.add(Tools.getImageContentUri(context, file));
|
|
if(!StringUtils.isBlank(copyText)){
|
ClipboardUtil.copy(context,copyText);
|
Toast.makeText(context, "复制成功", Toast.LENGTH_SHORT).show();
|
}
|
listener.success(uriList, fileList);
|
}
|
});
|
}
|
|
@Override
|
public void process(int count) {
|
}
|
});
|
} catch (Exception e) {
|
Toast.makeText(context, "图片下载失败", Toast.LENGTH_SHORT).show();
|
}
|
|
}
|
|
public SendCircleShareDialog create() {
|
pd = new ShapeLoadingDialog.Builder(context).build();
|
mPermissionsChecker = new PermissionsChecker(context);
|
LayoutInflater inflater = (LayoutInflater) context
|
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
WindowManager wm = (WindowManager) context
|
.getSystemService(Context.WINDOW_SERVICE);
|
|
int width = wm.getDefaultDisplay().getWidth();
|
final SendCircleShareDialog dialog = new SendCircleShareDialog(context,
|
R.style.Dialog);
|
|
final View layout = inflater.inflate(R.layout.item_share_new_bord,
|
null);
|
|
LinearLayout ll_share_wxcircle = layout.findViewById(R.id.ll_share_wxcircle);
|
final ImageView iv_wx_circle = layout.findViewById(R.id.iv_share_wx_circle);
|
if (shareImages != null && shareImages.size() > 1) {
|
ll_share_wxcircle.setEnabled(false);
|
iv_wx_circle.setImageResource(R.drawable.ic_link_share_wxcircle_invalid);
|
} else {
|
ll_share_wxcircle.setEnabled(true);
|
iv_wx_circle.setImageResource(R.drawable.ic_share_wxcircle);
|
}
|
|
|
layout.findViewById(R.id.ll_share_wx).setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
downloadImages(layout, shareImages, new IPrepareResult() {
|
@Override
|
public void success(ArrayList<Uri> uriList, List<File> fileList) {
|
if (dialog.isShowing())
|
dialog.dismiss();
|
ShareImageUtil.shareWXPictureByIntent(context, uriList);
|
}
|
});
|
}
|
});
|
ll_share_wxcircle.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
downloadImages(layout, shareImages, new IPrepareResult() {
|
@Override
|
public void success(ArrayList<Uri> uriList, List<File> fileList) {
|
if (dialog.isShowing())
|
dialog.dismiss();
|
ShareImageUtil.shareWXCirclePictureByIntent(context, uriList);
|
}
|
});
|
}
|
});
|
layout.findViewById(R.id.ll_share_qq).setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
downloadImages(layout, shareImages, new IPrepareResult() {
|
@Override
|
public void success(ArrayList<Uri> uriList, List<File> fileList) {
|
if (dialog.isShowing())
|
dialog.dismiss();
|
ShareImageUtil.shareQQPictureByIntent(context, uriList);
|
}
|
});
|
}
|
});
|
layout.findViewById(R.id.ll_share_download).setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
|
downloadImages(layout, shareImages, new IPrepareResult() {
|
@Override
|
public void success(ArrayList<Uri> uriList, List<File> fileList) {
|
String rootPath = android.os.Environment.getExternalStorageDirectory()
|
+ "/tejiaapp";
|
File rootFile = new File(rootPath);
|
if (!rootFile.exists()) {
|
rootFile.mkdirs();
|
}
|
|
try {
|
for (File file : fileList) {
|
if (file.exists()) {
|
File newFile = new File(rootFile.getPath() + "/" + file.getName());
|
FileUtils.copyFile(new FileInputStream(file), newFile);
|
MediaScannerConnection.scanFile(context, new String[]{newFile.toString()}, null, null);
|
//删除原文件
|
file.delete();
|
}
|
}
|
if (dialog.isShowing())
|
dialog.dismiss();
|
Toast.makeText(context, "图片保存成功", Toast.LENGTH_SHORT).show();
|
} catch (FileNotFoundException e) {
|
Toast.makeText(context, "图片保存失败", Toast.LENGTH_SHORT).show();
|
}
|
}
|
});
|
|
}
|
});
|
layout.findViewById(R.id.ll_share_more).setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
downloadImages(layout, shareImages, new IPrepareResult() {
|
@Override
|
public void success(ArrayList<Uri> uriList, List<File> fileList) {
|
if (dialog.isShowing())
|
dialog.dismiss();
|
Intent mulIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
|
mulIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
|
mulIntent.setType("image/png");
|
context.startActivity(Intent.createChooser(mulIntent, "多图文件分享"));
|
}
|
});
|
}
|
});
|
|
dialog.addContentView(layout, new LayoutParams(
|
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
|
dialog.setContentView(layout);
|
WindowManager.LayoutParams params = dialog.getWindow()
|
.getAttributes();
|
params.gravity = Gravity.BOTTOM;
|
params.width = width;
|
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
|
dialog.getWindow().setAttributes(params);
|
dialog.setCanceledOnTouchOutside(true);
|
|
return dialog;
|
}
|
}
|
|
interface IPrepareResult {
|
public void success(ArrayList<Uri> uriList, List<File> fileList);
|
}
|
}
|