第三方 ShareSdk QQ、微信分享

废话不多说,此文针对于有第三方分享基础的,注册那些流程就省去了,直接上代码,我的做法是封装到了一个自定义的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);
    }
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值