package com.haicaojie.android.util;
|
|
import android.Manifest;
|
import android.app.Activity;
|
import android.app.Dialog;
|
import android.app.ProgressDialog;
|
import android.content.ClipData;
|
import android.content.ClipboardManager;
|
import android.content.ComponentName;
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.net.Uri;
|
import android.os.Bundle;
|
import android.os.Handler;
|
import android.os.Message;
|
import android.service.notification.Condition;
|
import android.util.Log;
|
import android.view.Gravity;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup.LayoutParams;
|
import android.view.WindowManager;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.haicaojie.android.R;
|
import com.haicaojie.android.ShoppingApi;
|
import com.haicaojie.android.ui.main.MainActivity;
|
import com.lcjian.library.util.MobileUtil;
|
import com.lcjian.library.util.SingleToast;
|
import com.lcjian.library.widget.RatioLayout;
|
import com.loopj.android.http.JsonHttpResponseHandler;
|
import com.sina.weibo.sdk.api.MultiImageObject;
|
import com.sina.weibo.sdk.api.TextObject;
|
import com.sina.weibo.sdk.api.WeiboMultiMessage;
|
import com.umeng.socialize.media.UMImage;
|
|
import java.io.File;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class CustomShareNativeDialog extends Dialog {
|
|
public CustomShareNativeDialog(Context context) {
|
super(context);
|
}
|
|
public CustomShareNativeDialog(Context context, int theme) {
|
super(context, theme);
|
}
|
|
public static class Builder {
|
private Activity context;
|
private String title;
|
private String message;
|
private String sinaMessage;
|
private String url;
|
private String id;
|
private boolean isTrendGoods = false;
|
private ProgressDialog pd;
|
private String sinaUrl;
|
private String imageurl;
|
private UMImage image;
|
private boolean isGoods = false;
|
private String positiveButtonText;
|
private String negativeButtonText;
|
private View contentView;
|
private OnClickListener positiveButtonClickListener;
|
private OnClickListener negativeButtonClickListener;
|
|
private PermissionsChecker mPermissionsChecker; // 权限检测器
|
|
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;
|
}
|
|
public Builder setMessage(String message) {
|
this.message = message;
|
return this;
|
}
|
|
public Builder setSinaMessage(String message) {
|
this.sinaMessage = message;
|
return this;
|
}
|
|
public Builder setUrl(String Url) {
|
this.url = Url;
|
return this;
|
}
|
|
public Builder setId(String id) {
|
this.id = id;
|
return this;
|
}
|
|
public Builder isTrendGoods(boolean isTrendGoods) {
|
this.isTrendGoods = isTrendGoods;
|
return this;
|
}
|
|
public Builder setLoading(ProgressDialog pd) {
|
this.pd = pd;
|
return this;
|
}
|
|
public Builder setSinaUrl(String Url) {
|
this.sinaUrl = Url;
|
return this;
|
}
|
|
/**
|
* Set the Dialog message from resource
|
*
|
* @return
|
*/
|
public Builder setMessage(int message) {
|
this.message = (String) context.getText(message);
|
return this;
|
}
|
|
/**
|
* Set the Dialog title from resource
|
*
|
* @param title
|
* @return
|
*/
|
public Builder setTitle(int title) {
|
this.title = (String) context.getText(title);
|
return this;
|
}
|
|
/**
|
* Set the Dialog title from String
|
*
|
* @param title
|
* @return
|
*/
|
|
public Builder setTitle(String title) {
|
this.title = title;
|
return this;
|
}
|
|
public Builder setContentView(View v) {
|
this.contentView = v;
|
return this;
|
}
|
|
public Builder setContentImage(String imageurl) {
|
this.imageurl = imageurl;
|
this.image = new UMImage(context, imageurl);
|
return this;
|
}
|
|
public Builder setGoodsImgs(List<String> imgs) {
|
this.imgs = imgs;
|
return this;
|
}
|
|
/**
|
* Set the positive button resource and it's listener
|
*
|
* @param positiveButtonText
|
* @return
|
*/
|
public Builder setPositiveButton(int positiveButtonText,
|
OnClickListener listener) {
|
this.positiveButtonText = (String) context
|
.getText(positiveButtonText);
|
this.positiveButtonClickListener = listener;
|
return this;
|
}
|
|
public Builder setPositiveButton(String positiveButtonText,
|
OnClickListener listener) {
|
this.positiveButtonText = positiveButtonText;
|
this.positiveButtonClickListener = listener;
|
return this;
|
}
|
|
public Builder setNegativeButton(int negativeButtonText,
|
OnClickListener listener) {
|
this.negativeButtonText = (String) context
|
.getText(negativeButtonText);
|
this.negativeButtonClickListener = listener;
|
return this;
|
}
|
|
public Builder setNegativeButton(String negativeButtonText,
|
OnClickListener listener) {
|
this.negativeButtonText = negativeButtonText;
|
this.negativeButtonClickListener = listener;
|
return this;
|
}
|
|
CustomShareNativeDialog dialog;
|
|
public CustomShareNativeDialog create() {
|
if (pd != null) {
|
pd.show();
|
}
|
mPermissionsChecker = new PermissionsChecker(context);
|
LayoutInflater inflater = (LayoutInflater) context
|
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
// instantiate the dialog with the custom Theme
|
WindowManager wm = (WindowManager) context
|
.getSystemService(Context.WINDOW_SERVICE);
|
|
int width = wm.getDefaultDisplay().getWidth();
|
dialog = new CustomShareNativeDialog(context,
|
R.style.Dialog);
|
|
View layout = inflater.inflate(R.layout.custom_share_bottom_dialog,
|
null);
|
RatioLayout rl_qq = (RatioLayout) layout.findViewById(R.id.rl_qq);
|
RatioLayout rl_qqzone = (RatioLayout) layout.findViewById(R.id.rl_qqzone);
|
RatioLayout rl_sina = (RatioLayout) layout.findViewById(R.id.rl_sina);
|
RatioLayout rl_friends = (RatioLayout) layout.findViewById(R.id.rl_friends);
|
RatioLayout rl_wxchat = (RatioLayout) layout.findViewById(R.id.rl_wxchat);
|
dialog.addContentView(layout, new LayoutParams(
|
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
|
rl_friends.setRatio(1);
|
rl_wxchat.setRatio(1);
|
rl_qq.setVisibility(View.VISIBLE);
|
rl_qqzone.setVisibility(View.GONE);
|
if (isTrendGoods) {
|
rl_sina.setVisibility(View.GONE);
|
} else {
|
rl_sina.setVisibility(View.VISIBLE);
|
}
|
|
rl_friends.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View arg0) {
|
shareImgs(1);
|
}
|
});
|
rl_qq.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View arg0) {
|
android.util.Log.i("mResult:", "url" + url + "--message:" + message + "--title:" + title + "--imageurl" + imageurl);
|
shareImgs(2);
|
|
}
|
});
|
rl_qqzone.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View arg0) {
|
|
}
|
});
|
rl_sina.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View arg0) {
|
android.util.Log.i("mResult:", "url" + url + "--message:" + message + "--title:" + title + "--imageurl" + imageurl);
|
shareImgs(3);
|
}
|
});
|
rl_wxchat.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View arg0) {
|
shareImgs(0);
|
}
|
});
|
((RatioLayout) layout.findViewById(R.id.rl_copy_link))
|
.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View arg0) {
|
ClipData myClip;
|
ClipboardManager manager = (ClipboardManager) context
|
.getSystemService(context.CLIPBOARD_SERVICE);
|
myClip = ClipData.newPlainText("text", url);
|
manager.setPrimaryClip(myClip);
|
Toast.makeText(context, "复制链接成功",
|
Toast.LENGTH_SHORT).show();
|
}
|
});
|
// set the cancel button
|
if (negativeButtonText != null) {
|
((TextView) layout.findViewById(R.id.tv_dialog_cancel))
|
.setText(negativeButtonText);
|
if (negativeButtonClickListener != null) {
|
((TextView) layout.findViewById(R.id.tv_dialog_cancel))
|
.setOnClickListener(new View.OnClickListener() {
|
public void onClick(View v) {
|
negativeButtonClickListener.onClick(dialog,
|
DialogInterface.BUTTON_NEGATIVE);
|
}
|
});
|
}
|
} else {
|
// if no confirm button just set the visibility to GONE
|
layout.findViewById(R.id.tv_dialog_cancel).setVisibility(
|
View.GONE);
|
}
|
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;
|
}
|
|
/**
|
* 多张图片分享 platform--0 微信好友
|
* platform--1 朋友圈
|
* platform--2 QQ
|
*
|
* @param platfrom
|
*/
|
private List<String> imgs;
|
private List<File> files = new ArrayList<>();
|
boolean isDownloadFinish = false;
|
String description = "";
|
String link = "";
|
|
private void shareImgs(final int platfrom) {
|
int avilibleValue = 0;
|
if (platfrom == 0 || platfrom == 1) {
|
avilibleValue = Tools.isWeixinAvilible(context);
|
} else if (platfrom == 2) {
|
avilibleValue = Tools.isQQAvilible(context);
|
} else if (platfrom == 3) {
|
avilibleValue = Tools.isSinaAvilible(context);
|
}
|
|
if ((platfrom == 0 || platfrom == 1) && (avilibleValue == 1 || avilibleValue == 2)) {
|
if (avilibleValue == 2) {
|
Toast.makeText(context, "您还没有安装微信", Toast.LENGTH_SHORT).show();
|
}
|
} else if (platfrom == 2 && (avilibleValue == 1 || avilibleValue == 2)) {
|
if (avilibleValue == 2) {
|
Toast.makeText(context, "您还没有安装QQ", Toast.LENGTH_SHORT).show();
|
}
|
} else if (platfrom == 3 && (avilibleValue == 1 || avilibleValue == 2)) {
|
if (avilibleValue == 2) {
|
Toast.makeText(context, "您还没有安装微博", Toast.LENGTH_SHORT).show();
|
}
|
} else {
|
final ProgressDialog pd = new ProgressDialog(context);
|
pd.setMessage("请稍候...");
|
pd.show();
|
String path = context.getExternalCacheDir().getPath() + "/share";
|
File storageDir = new File(path);
|
if (storageDir.isDirectory()) {
|
try {
|
File files[] = storageDir.listFiles();
|
for (int i = 0; i < files.length; i++) {
|
// deleteFolderFile(files[i].getAbsolutePath());
|
files[i].delete();
|
}
|
if (!storageDir.isDirectory()) {
|
storageDir.delete();
|
} else {
|
if (storageDir.listFiles().length == 0) {
|
storageDir.delete();
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
files.clear();
|
Log.e("imgPath", "图片list的长度:" + imgs.size());
|
for (int i = 0; i < imgs.size(); i++) {
|
final int j = i;
|
Log.e("imgPath", imgs.get(j));
|
final Thread thread = new Thread(new Runnable() {
|
@Override
|
public void run() {
|
File file = Tools.saveImageToSdCard(context, imgs.get(j));
|
if (file == null) {
|
Log.e("imgPath", "图片为空:" + imgs.get(j));
|
}
|
files.add(file);
|
Log.e("imgPath", "缓存文件夹中图片数量----" + files.size() + "-----图片list的长度:" + imgs.size());
|
if (files.size() == imgs.size() && !isDownloadFinish) {
|
isDownloadFinish = true;
|
Intent intent = new Intent();
|
ComponentName comp;
|
if (platfrom == 0) {
|
comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");
|
} else if (platfrom == 1) {
|
comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");
|
intent.putExtra("Kdescription", title);
|
} else {
|
comp = new ComponentName("com.tencent.mobileqq", "com.tencent.mobileqq.activity.JumpActivity");
|
}
|
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
|
intent.setType("image/*");
|
|
ArrayList<Uri> imageUris = new ArrayList<>();
|
String path = context.getExternalCacheDir().getPath() + "/share";
|
File storageDir = new File(path);
|
for (int i = 0; i < storageDir.listFiles().length; i++) {
|
imageUris.add(Uri.fromFile(storageDir.listFiles()[i]));
|
}
|
if (platfrom == 3) {
|
WeiboMultiMessage weiboMessage = new WeiboMultiMessage();
|
MultiImageObject multiImageObject = new MultiImageObject();
|
weiboMessage.textObject = getTextObj();
|
multiImageObject.setImageList(imageUris);
|
weiboMessage.multiImageObject = multiImageObject;
|
MainActivity.shareHandler.shareMessage(weiboMessage, true);
|
} else {
|
intent.setComponent(comp);
|
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
|
context.startActivity(intent);
|
}
|
pd.dismiss();
|
handler.sendEmptyMessage(1);
|
}
|
}
|
});
|
thread.start();
|
}
|
}
|
}
|
|
|
/**
|
* 创建文本消息对象。
|
*
|
* @return 文本消息对象。
|
*/
|
private TextObject getTextObj() {
|
TextObject textObject = new TextObject();
|
textObject.text = description;
|
textObject.title = title;
|
textObject.actionUrl = link;
|
return textObject;
|
}
|
|
Handler handler = new Handler() {
|
@Override
|
public void handleMessage(Message msg) {
|
super.handleMessage(msg);
|
if (dialog.isShowing())
|
dialog.dismiss();
|
ShoppingApi.addShareCount(context, id, new JsonHttpResponseHandler());
|
}
|
};
|
|
}
|
|
|
}
|