0
点赞
收藏
分享

微信扫一扫

Android利用ShareSdk实现易信分享


一、概述
最近一个老项目要添加易信分享功能,原项目使用的是eclipse开发,项目之前的分享用的第三方分享ShareSdk,于是基于ShareSdk我编写了一个Demo来测试该功能。
ShareSdk官网:http://www.mob.com/
还没有账号的需要注册一个账号
易信开发平台:http://open.yixin.im/
需要自己注册账号,账号注册成功后需要提交自己的应用信息,当然这里的应用必须是已经上线了的应用,需要填写应用的市场下载地址,还有一个就是提前准备好应用的签名信息,需要自己下载应用签名工具获取。

二、实现效果图

1.主界面

Android利用ShareSdk实现易信分享_ide


2.易信好友分享

Android利用ShareSdk实现易信分享_android_02


3.易信朋友圈分享

Android利用ShareSdk实现易信分享_ide_03

三、核心代码

MainActivity.java:

package com.czhappy.kuaizhi;

import java.util.HashMap;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.Toast;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.yixin.friends.Yixin;
import cn.sharesdk.yixin.friends.Yixin.ShareParams;
import cn.sharesdk.yixin.moments.YixinMoments;

public class MainActivity extends Activity implements OnClickListener, ShareThreadListener{

    private LinearLayout yx_friend_layout;
    private LinearLayout yx_circle_layout;

    private Handler handler = new Handler();
    private ShareThreadListener threadListener = this;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ShareSDK.initSDK(this);
        initView();
    }

    private void initView() {
        yx_friend_layout = (LinearLayout) this.findViewById(R.id.yx_friend_layout);
        yx_friend_layout.setOnClickListener(this);

        yx_circle_layout = (LinearLayout) this.findViewById(R.id.yx_circle_layout);
        yx_circle_layout.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        String imgPath =
        switch (v.getId()) {
        case R.id.yx_friend_layout:
            shareYX(1, "title易信好友分享", "content易信好友分享", imgPath, url, 111);
            break;
        case R.id.yx_circle_layout:
            shareYX(2, "title易信好友分享", "content易信好友分享", imgPath, url, 222);
            break;
        default:
            break;
        }
    }

    public void shareYX(int shareType, String title, String content, String imgPath, String url,int shareTypeId){
        String name = "";
        int res = 0;
        switch(shareType){
        case 1:
            name = Yixin.NAME;
            res = R.string.yixin_client_inavailable;
            break;
        case 2:
            name = YixinMoments.NAME;
            res = R.string.yixin_client_inavailable;
            break;
        }
        shareYX(title, content, imgPath, url, name, res);
    }

    public void shareYX(String title, String content, String imagePath, String url, String name, int res){
        Platform yx = ShareSDK.getPlatform(this, name);
        if(checkValid(yx, res)){
            ShareParams sp = new ShareParams();
            sp.setTitle(title);
            sp.setText(content);
            //网页分享
            sp.setShareType(Platform.SHARE_WEBPAGE);
            sp.setUrl(url);
            sp.setImageUrl(imagePath);
            yx.setPlatformActionListener(shareListener); // 设置分享事件回调
            // 执行图文分享
            yx.share(sp);
        }
    }

    /**
     * 验证有效性
     * @param p
     * @param res
     * @return
     */
    private boolean checkValid(Platform p, final int res){
        if(!p.isValid()){
            handler.post(new Runnable() {
                @Override
                public void run() {
                    threadListener.onMsg(res);
                }
            });
            return false;
        }
        return true;
    }

    @Override
    public void onError(Platform plat, int action, Throwable t) {
        Toast.makeText(MainActivity.this, "分享失败", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onComplete(Platform plat, int action,
            HashMap<String, Object> res) {
        Toast.makeText(MainActivity.this, "分享完成", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onCancel(Platform plat, int action) {
        Toast.makeText(MainActivity.this, "分享取消", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onMsg(int res) {
        Toast.makeText(MainActivity.this, "res="+getString(res), Toast.LENGTH_SHORT).show();

    }

    /**
     * 分享回调
     */
    PlatformActionListener shareListener = new PlatformActionListener() {
        @Override
        public void onError(final Platform plat, final int action, final Throwable t) {
            Log.e("log", t.getMessage());
            handler.post(new Runnable() {
                @Override
                public void run() {
                    threadListener.onError(plat, action, t);
                }
            });
        }

        @Override
        public void onComplete(final Platform plat, final int action, final HashMap<String, Object> res) {
            handler.post(new Runnable() {
                @Override
                public void run() {
                    threadListener.onComplete(plat, action, res);
                }
            });
        }

        @Override
        public void onCancel(final Platform plat, final int action) {
            Log.e("log", "取消分享");
            handler.post(new Runnable() {
                @Override
                public void run() {
                    threadListener.onCancel(plat, action);
                }
            });
        }
    };
}

ShareThreadListener.java

package com.czhappy.kuaizhi;

import java.util.HashMap;

import cn.sharesdk.framework.Platform;

/**
 * 分享线程穿透监听器
 * @author Administrator
 *
 */
public interface ShareThreadListener {
    //失败
    public void onError(Platform plat, int action, Throwable t);
    //完成
    public void onComplete(Platform plat, int action, HashMap<String, Object> res);
    //取消
    public void onCancel(Platform plat, int action);
    //消息
    public void onMsg(int res);
}

四、注意事项

1、项目中使用的jar包

Android利用ShareSdk实现易信分享_ci_04

2、需要添加与微信类似的YXEntryActivity

Android利用ShareSdk实现易信分享_ci_05

3、assets目录下添加ShareSDK.xml配置文件

Android利用ShareSdk实现易信分享_ci_06


举报

相关推荐

0 条评论