package com.weikou.beibeivideo.util;
|
|
import android.Manifest;
|
import android.app.Activity;
|
import android.app.Dialog;
|
import android.app.ProgressDialog;
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.view.Gravity;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup.LayoutParams;
|
import android.view.WindowManager;
|
import android.widget.FrameLayout;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.umeng.socialize.ShareAction;
|
import com.umeng.socialize.UMShareAPI;
|
import com.umeng.socialize.UMShareListener;
|
import com.umeng.socialize.bean.SHARE_MEDIA;
|
import com.umeng.socialize.media.UMImage;
|
import com.umeng.socialize.media.UMMin;
|
import com.umeng.socialize.media.UMWeb;
|
import com.weikou.beibeivideo.R;
|
|
public class CustomShareDialog extends Dialog {
|
|
public CustomShareDialog(Context context) {
|
super(context);
|
}
|
|
public CustomShareDialog(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 sinaUrl;
|
private String imageurl;
|
private String path;
|
private String userName;
|
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 setPath(String path) {
|
this.path = path;
|
return this;
|
}
|
|
public Builder setUserName(String userName) {
|
this.userName = userName;
|
return this;
|
}
|
|
public Builder setSinaMessage(String message) {
|
this.sinaMessage = message;
|
return this;
|
}
|
|
public Builder setUrl(String Url) {
|
this.url = Url;
|
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;
|
}
|
|
public Builder isGoods(boolean isGoods) {
|
this.isGoods = isGoods;
|
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;
|
}
|
|
/**
|
* 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;
|
}
|
|
public CustomShareDialog create() {
|
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();
|
final CustomShareDialog dialog = new CustomShareDialog(context,
|
R.style.Dialog);
|
|
View layout = inflater.inflate(R.layout.custom_share_bottom_dialog,
|
null);
|
FrameLayout rl_qq = (FrameLayout) layout.findViewById(R.id.rl_qq);
|
FrameLayout rl_qqzone = (FrameLayout) layout.findViewById(R.id.rl_qqzone);
|
FrameLayout rl_sina = (FrameLayout) layout.findViewById(R.id.rl_sina);
|
FrameLayout rl_friends = (FrameLayout) layout.findViewById(R.id.rl_friends);
|
FrameLayout rl_wxchat = (FrameLayout) layout.findViewById(R.id.rl_wxchat);
|
dialog.addContentView(layout, new LayoutParams(
|
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
|
rl_friends.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View arg0) {
|
UMWeb web = new UMWeb(url);
|
web.setDescription(message);
|
web.setTitle(title);
|
web.setThumb(image);
|
new ShareAction(context).withMedia(web).withText(message)
|
.setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE).setCallback(shareListener).share();
|
}
|
});
|
rl_qq.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View arg0) {
|
if (mPermissionsChecker.lacksPermissions(PERMISSIONS)) {
|
startPermissionsActivity();
|
} else {
|
UMWeb web = new UMWeb(url);
|
web.setDescription(message);
|
web.setTitle(title);
|
web.setThumb(image);
|
new ShareAction(context).withMedia(web).withText(message)
|
.setPlatform(SHARE_MEDIA.QQ).setCallback(shareListener).share();
|
}
|
|
}
|
});
|
rl_qqzone.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View arg0) {
|
if (mPermissionsChecker.lacksPermissions(PERMISSIONS)) {
|
startPermissionsActivity();
|
} else {
|
UMWeb web = new UMWeb("http://www.baidu.com");
|
web.setDescription(message);
|
web.setTitle(title);
|
UMImage shareImage = new UMImage(context, imageurl);//网络图片
|
web.setThumb(shareImage);
|
new ShareAction(context).withText(message).withMedia(web)
|
.setPlatform(SHARE_MEDIA.QZONE).setCallback(shareListener).share();
|
}
|
}
|
});
|
rl_sina.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View arg0) {
|
UMWeb web = new UMWeb(url);
|
web.setDescription(message);
|
web.setTitle(title);
|
web.setThumb(image);
|
new ShareAction(context).withText(sinaMessage).withMedia(web)
|
.setPlatform(SHARE_MEDIA.SINA).setCallback(shareListener).share();
|
}
|
});
|
rl_wxchat.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
public void onClick(View arg0) {
|
UMMin umMin = new UMMin(url);
|
umMin.setThumb(image);
|
umMin.setTitle(title);
|
umMin.setDescription(message);
|
umMin.setPath(path);
|
umMin.setUserName(userName);
|
new ShareAction(context)
|
.withMedia(umMin)
|
.setPlatform(SHARE_MEDIA.WEIXIN)
|
.setCallback(shareListener).share();
|
}
|
});
|
// 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;
|
}
|
|
UMShareListener shareListener = new UMShareListener() {
|
@Override
|
public void onStart(SHARE_MEDIA share_media) {
|
|
}
|
|
@Override
|
public void onResult(SHARE_MEDIA share_media) {
|
Toast.makeText(context, "分享成功!", Toast.LENGTH_LONG).show();
|
}
|
|
@Override
|
public void onError(SHARE_MEDIA share_media, Throwable throwable) {
|
if (!UMShareAPI.get(context).isInstall(context, share_media)) {
|
Toast.makeText(context, share_media == SHARE_MEDIA.QQ ? "没有安装QQ" : "没有安装微信", Toast.LENGTH_LONG).show();
|
} else {
|
Toast.makeText(context, "分享出错!", Toast.LENGTH_LONG).show();
|
}
|
}
|
|
@Override
|
public void onCancel(SHARE_MEDIA share_media) {
|
Toast.makeText(context, "分享取消!", Toast.LENGTH_LONG).show();
|
}
|
};
|
}
|
|
}
|