废话不多说,此文针对于有第三方分享基础的,注册那些流程就省去了,直接上代码,我的做法是封装到了一个自定义的Dialog当中。
package com.example.sharesdkdemo;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Display;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import java.util.HashMap;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.tencent.qq.QQ;
import cn.sharesdk.tencent.qzone.QZone;
import cn.sharesdk.wechat.friends.Wechat;
import cn.sharesdk.wechat.moments.WechatMoments;
/**
* Created by yangxiaolong on 2016/10/24.
*/
public class ShareDialog extends Dialog {
private ImageView qqDialog;
private ImageView qSpaceDialog;
private ImageView weChatDialog;
private ImageView weMonDialog;
private Handler handler;
private PlatformActionListener platform;//回调
private View.OnClickListener shareOnclick;//单击
public ShareDialog(final Context context) {
this(context, R.style.MyAnimDialog);
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
Toast.makeText(context, "QQ分享成功", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(context, "空间分享成功", Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(context, "朋友圈分享成功", Toast.LENGTH_SHORT).show();
break;
case 4:
Toast.makeText(context, "微信分享成功", Toast.LENGTH_SHORT).show();
break;
case 5:
Toast.makeText(context, "取消分享", Toast.LENGTH_SHORT).show();
break;
case 6:
Toast.makeText(context, "分享失败", Toast.LENGTH_SHORT).show();
break;
}
}
};
}
public ShareDialog(final Context context, int themeResId) {
super(context, themeResId);
setPlatfromActionAListener();
setSharePlatfromOnclickListener(context);
//加载布局视图
LinearLayout view = (LinearLayout) getLayoutInflater().inflate(R.layout.share_dialog, null);
qqDialog = (ImageView) view.findViewById(R.id.qqShare);
//QQ分享
qqDialog.setOnClickListener(shareOnclick);
qSpaceDialog = (ImageView) view.findViewById(R.id.qSpaceShare);
//空间分享
qSpaceDialog.setOnClickListener(shareOnclick);
weMonDialog = (ImageView) view.findViewById(R.id.weMonShare);
//朋友圈分享
weMonDialog.setOnClickListener(shareOnclick);
weChatDialog = (ImageView) view.findViewById(R.id.weChatShare);
//微信分享
weChatDialog.setOnClickListener(shareOnclick);
super.setContentView(view);
}
public void setSharePlatfromOnclickListener(final Context context) {
shareOnclick = new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.qqShare://qq分享
Toast.makeText(context, "分享到QQ好友", Toast.LENGTH_SHORT).show();
QQ.ShareParams qq = new QQ.ShareParams();
qq.setTitle("我是分享标题");
qq.setText("我是分享文本");//分享文本
qq.setImageUrl("");//分享网络图片
qq.setTitleUrl("http://www.baidu.com");//分享跳转页
Platform qPlatform = ShareSDK.getPlatform(QQ.NAME);//获取QQ好友对象
qPlatform.setPlatformActionListener(platform);//分享事件回调
// 执行分享
qPlatform.share(qq);
break;
case R.id.qSpaceShare://空间分享
Toast.makeText(context, "分享到QQ空间", Toast.LENGTH_SHORT).show();
QZone.ShareParams qz = new QZone.ShareParams();
qz.setTitle("我是分享标题");
qz.setText("我是分享文本");//分享文本
qz.setImageUrl("");//分享网络图片
qz.setTitleUrl("http://www.baidu.com");//分享跳转页
final Platform qzone = ShareSDK.getPlatform(QZone.NAME);//获取QQ空间平台对象
qzone.setPlatformActionListener(platform);//分享事件回调
//执行分享
qzone.share(qz);
break;
case R.id.weMonShare://朋友圈分享
Toast.makeText(context, "分享到朋友圈", Toast.LENGTH_SHORT).show();
WechatMoments.ShareParams weMoments = new WechatMoments.ShareParams();
weMoments.setShareType(Platform.SHARE_WEBPAGE);//设置分享属性
weMoments.setText("我是分享文本");//分享文本
weMoments.setImageUrl("");//分享网络图片
weMoments.setUrl("http://www.baidu.com");//分享跳转页
final Platform wechatMoments = ShareSDK.getPlatform(WechatMoments.NAME);//获取朋友圈对象
wechatMoments.setPlatformActionListener(platform);//分享事件回调
// 执行分享
wechatMoments.share(weMoments);
break;
case R.id.weChatShare://微信分享
Toast.makeText(context, "分享到微信好友", Toast.LENGTH_SHORT).show();
Wechat.ShareParams wc = new Wechat.ShareParams();
wc.setShareType(Platform.SHARE_WEBPAGE);//设置分享属性
wc.setText("我是分享文本");//分享文本
wc.setImageUrl("");//分享网络图片
wc.setUrl("http://www.baidu.com");//分享跳转页
final Platform weChat = ShareSDK.getPlatform(Wechat.NAME);//获取微信好友对象
weChat.setPlatformActionListener(platform);//分享事件回调
// 执行分享
weChat.share(wc);
break;
}
//隐藏弹框
dismiss();
}
};
}
public void setPlatfromActionAListener() {//回调接口监听
platform = new PlatformActionListener() {
@Override
public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {//分享成功
if (platform.getName().equals(QQ.NAME)) {
handler.sendEmptyMessage(1);
} else if (platform.getName().equals(QZone.NAME)) {
handler.sendEmptyMessage(2);
} else if (platform.getName().equals(WechatMoments.NAME)) {
handler.sendEmptyMessage(3);
} else {
handler.sendEmptyMessage(4);
}
}
@Override
public void onError(Platform platform, int i, Throwable arg2) {//分享失败
arg2.printStackTrace();//异常错误
Message msg = new Message();
msg.what = 6;
msg.obj = arg2.getMessage();
handler.sendMessage(msg);
}
@Override
public void onCancel(Platform platform, int i) {//取消分享
handler.sendEmptyMessage(5);
}
};
}
protected ShareDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
}
private void showDialog() {
// 预先设置Dialog的一些属性
// 将dialog对话框设置在最底部
Window dialogWindow = getWindow();
WindowManager.LayoutParams p = dialogWindow.getAttributes();
WindowManager m = getWindow().getWindowManager();
Display d = m.getDefaultDisplay();
getWindow().setAttributes(p);
p.height = (int) (d.getHeight() * 0.2);
p.width = d.getWidth();
p.gravity = Gravity.LEFT | Gravity.BOTTOM;
dialogWindow.setAttributes(p);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
showDialog();
}
}
请珍惜劳动成果
直接在单击事件中调用即可
private void initView() {
//分享初始化
ShareSDK.initSDK(this);
btnShare = (Button) findViewById(R.id.btnShare);
btnShare.setOnClickListener(this);
}