您的位置:首页 > 移动开发 > Android开发

Android利用ShareSdk实现易信分享

2016-12-29 15:32 417 查看
一、概述

最近一个老项目要添加易信分享功能,原项目使用的是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配置文件

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: