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
- Android利用ShareSdk实现易信分享
- Android实现ShareSDK分享
- Android实现ShareSDK分享
- 【Android 分享】ShareSDK微信分享详解
- 【Android 分享】ShareSDK微信分享详解
- 【Android 分享】ShareSDK微信分享详解
- Android利用ShareSDK实现第三方登录分享
- ShareSDK接入实现微信分享功能
- shareSDK[Android常见问题] 微信分享
- Android ShareSdk 微信分享的步骤
- 利用ShareSDK实现第三方分享功能
- Android系统分享,微信SDK分享,ShareSdk分享
- sharesdk微信分享
- sharesdk微信分享
- sharesdk微信分享
- iOS ShareSDK实现分享——微信分享
- IOS ShareSDK实现分享——微信分享
- android ShareSDK分享,QQ,微信,新浪等分享
- object c怎么从一段字符串中截取数据
- springboot 开发入门
- tableviewcell里面 嵌套scrollview,scrollview里面再嵌套3个tableview,子tableview的数据源方法不执行
- 二维数组
- SpringMVC+Spring+Hibernate搭建实例
- Android利用ShareSdk实现易信分享
- zookeeper安装以及相关知识点
- Java枚举类和c++枚举类比较
- HDFS小文件问题及解决方案
- 微信支付集成文档
- LDA
- Nordic52832 Secure DFU
- vysor原理以及Android同屏方案
- gitlab 仓库存放地址