Android利用ShareSdk实现易信分享

来源:互联网 发布:mac brew install git 编辑:程序博客网 时间:2024/04/28 05:28

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

二、实现效果图
1.主界面
这里写图片描述
2.易信好友分享
这里写图片描述
3.易信朋友圈分享
这里写图片描述

三、核心代码

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 = "http://avatar.csdn.net/E/F/1/1_chenzheng8975.jpg";        String url = "http://blog.csdn.net/chenzheng8975/article/details/53893666";        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包
这里写图片描述

2、需要添加与微信类似的YXEntryActivity
这里写图片描述

3、assets目录下添加ShareSDK.xml配置文件
这里写图片描述

0 0
原创粉丝点击