在前面我写了两篇关于QQ和微信的分享(http://blog.csdn.net/dawanganban/article/details/42015249)(http://blog.csdn.net/dawanganban/article/details/40478317)这一篇我们来看以怎样实现微博分享功能。

微博的參考文档在开放平台上转悠了半天,没有找到,终于才惊奇的发如今SDK的Demo中。还是我的老思路,遇到这样的第三方接入的最快最好的入手点就是入门文档和官方Demo,打开Demo我们就会看到相关文档和源代码,因为前面的APPID的申请和QQ、微信差点儿相同,所以我在这里就不反复了,能够參考一下上面的两篇文章。接下来我就将我封装好的源代码粘出来例如以下:

public class SinaShareManager{
/**
* 文字
*/
public static final int SINA_SHARE_WAY_TEXT = 1;
/**
* 图片
*/
public static final int SINA_SHARE_WAY_PIC = 2;
/**
* 链接
*/
public static final int SINA_SHARE_WAY_WEBPAGE = 3; private static String sinaAppKey;
public static final String SCOPE =
"email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write";
/** 微博分享的接口实例 */
private IWeiboShareAPI sinaAPI; public void registSina(Context context){
//获取appkey
if(sinaAppKey == null){
sinaAppKey = SinaShareUtil.getSinaAppKey(context);
}
//初始化微博分享代码
if(sinaAppKey != null){
initSinaShare(context);
}
} /**
* 新浪微博分享方法
* @param shareContent 分享的内容
*/
public void shareBySina(ShareContent shareContent, Context context){
if(sinaAPI == null) return;
switch (shareContent.getShareWay()) {
case SINA_SHARE_WAY_TEXT:
shareText(shareContent);
break;
case SINA_SHARE_WAY_PIC:
sharePicture(shareContent, context);
break;
case SINA_SHARE_WAY_WEBPAGE:
shareWebPage(shareContent, context);
break;
}
} /*
* 分享文字
*/
private void shareText(ShareContent shareContent){
//初始化微博的分享消息
WeiboMessage weiboMessage = new WeiboMessage();
weiboMessage.mediaObject = getTextObj(shareContent.getContent());
//初始化从第三方到微博的消息请求
SendMessageToWeiboRequest request = new SendMessageToWeiboRequest();
request.transaction = buildTransaction("sinatext");
request.message = weiboMessage;
//发送请求信息到微博,唤起微博分享界面
sinaAPI.sendRequest(request);
} /*
* 分享图片
*/
private void sharePicture(ShareContent shareContent, Context context){
WeiboMessage weiboMessage = new WeiboMessage();
weiboMessage.mediaObject = getImageObj(shareContent.getPicResource(), context);
//初始化从第三方到微博的消息请求
SendMessageToWeiboRequest request = new SendMessageToWeiboRequest();
request.transaction = buildTransaction("sinatext");
request.message = weiboMessage;
//发送请求信息到微博,唤起微博分享界面
sinaAPI.sendRequest(request);
} private void shareWebPage(ShareContent shareContent, Context context){
WeiboMessage weiboMessage = new WeiboMessage();
weiboMessage.mediaObject = getWebpageObj(shareContent, context);
//初始化从第三方到微博的消息请求
SendMessageToWeiboRequest request = new SendMessageToWeiboRequest();
request.transaction = buildTransaction("sinatext");
request.message = weiboMessage;
//发送请求信息到微博,唤起微博分享界面
sinaAPI.sendRequest(request);
} /**
* 欢迎关注-阳光小强-http://blog.csdn.net/dawanganban
* @author lixiaoqiang
*
*/
private abstract class ShareContent{
protected abstract int getShareWay();
protected abstract String getContent();
protected abstract String getTitle();
protected abstract String getURL();
protected abstract int getPicResource();
} /**
* 设置分享文字的内容
* @author Administrator
*
*/
public class ShareContentText extends ShareContent{
private String content; /**
* 构造分享文字类
* @param text 分享的文字内容
*/
public ShareContentText(String content){
this.content = content;
} @Override
protected String getContent() { return content;
} @Override
protected String getTitle() {
return null;
} @Override
protected String getURL() {
return null;
} @Override
protected int getPicResource() {
return -1;
} @Override
protected int getShareWay() {
return SINA_SHARE_WAY_TEXT;
} } /**
* 设置分享图片的内容
* @author Administrator
*
*/
public class ShareContentPic extends ShareContent{
private int picResource;
public ShareContentPic(int picResource){
this.picResource = picResource;
} @Override
protected String getContent() {
return null;
} @Override
protected String getTitle() {
return null;
} @Override
protected String getURL() {
return null;
} @Override
protected int getPicResource() {
return picResource;
} @Override
protected int getShareWay() {
return SINA_SHARE_WAY_PIC;
}
} /**
* 设置分享链接的内容
* @author Administrator
*
*/
public class ShareContentWebpage extends ShareContent{
private String title;
private String content;
private String url;
private int picResource;
public ShareContentWebpage(String title, String content,
String url, int picResource){
this.title = title;
this.content = content;
this.url = url;
this.picResource = picResource;
} @Override
protected String getContent() {
return content;
} @Override
protected String getTitle() {
return title;
} @Override
protected String getURL() {
return url;
} @Override
protected int getPicResource() {
return picResource;
} @Override
protected int getShareWay() {
return SINA_SHARE_WAY_WEBPAGE;
} } /**
* 创建文本消息对象。 *
* @return 文本消息对象。
*/
private TextObject getTextObj(String text) {
TextObject textObject = new TextObject();
textObject.text = text;
return textObject;
} private ImageObject getImageObj(int picResource, Context context){
ImageObject imageObject = new ImageObject();
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), picResource);
imageObject.setImageObject(bmp);
return imageObject;
} private WebpageObject getWebpageObj(ShareContent shareContent, Context context){
WebpageObject mediaObject = new WebpageObject();
mediaObject.identify = Utility.generateGUID();
mediaObject.title = shareContent.getTitle();
mediaObject.description = shareContent.getContent(); // 设置 Bitmap 类型的图片到视频对象里
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), shareContent.getPicResource());
mediaObject.setThumbImage(bmp);
mediaObject.actionUrl = shareContent.getURL();
mediaObject.defaultText = shareContent.getContent();
return mediaObject;
} private void initSinaShare(Context context){
// 创建微博 SDK 接口实例
sinaAPI = WeiboShareSDK.createWeiboAPI(context, sinaAppKey);
//检查版本号支持情况
checkSinaVersin(context);
sinaAPI.registerApp();
} private void checkSinaVersin(final Context context) {
// 获取微博client相关信息,如是否安装、支持 SDK 的版本号
boolean isInstalledWeibo = sinaAPI.isWeiboAppInstalled();
//int supportApiLevel = sinaAPI.getWeiboAppSupportAPI(); // 假设未安装微博client,设置下载微博相应的回调
if (!isInstalledWeibo) {
sinaAPI.registerWeiboDownloadListener(new IWeiboDownloadListener() {
@Override
public void onCancel() {
Toast.makeText(context,
"取消下载",
Toast.LENGTH_SHORT).show();
}
});
}
} private String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
}
}

如有疑问能够提出或者加入博客旁边的QQ群进行交流。希望这三篇文章对大家有所帮助。

Android实现微博分享及其注意事项的更多相关文章

  1. Android实现微信分享及注意事项

    一.获取帮助文档并下载相关资料 首先打开微信开放平台:https://open.weixin.qq.com/ 如果没有注册,请先注册并上传开发者资料等待审核. 资源中心----移动应用开发----分享 ...

  2. android shareSDK 微博分享案例

    android shareSDK 微博分享案例 ShareSDK APP_KEY 219b1121fc68 腾讯微博 key 801517904 secret bfba83ae253c8f38dabe ...

  3. Android实现QQ分享及注意事项

    一.获取APPID和帮助文档 在前面我介绍了关于Android中微信分享的文章< Android实现微信分享及注意事项>这一篇文章来看看关于QQ分享. 可以参看新手引导和接入说明:http ...

  4. android 入门-微博分享

    [2015-03-11 13:40:32 - WeiboSDK] Unable to resolve target 'android-8' 修改project.properties  target=a ...

  5. Android Studio 独立引入(非友盟)微博分享和回调时问题

    最近同事在做一个小项目时,由于产品的要求,Wap页面的分享规定不能使用友盟的社会化组件.他则不得不手动一个一个渠道的引入分享,好在渠道不多就三个,但是第一微博分享引入的时候问题就出现了. 问题一:li ...

  6. Android 调用系统分享文字、图片、文件,可直达微信、朋友圈、QQ、QQ空间、微博

    原文:Android 调用系统分享文字.图片.文件,可直达微信.朋友圈.QQ.QQ空间.微博 兼容SDK 18以上的系统,直接调用系统分享功能,分享文本.图片.文件到第三方APP,如:微信.QQ.微博 ...

  7. 微信微博分享注意事项(sharesdk)

    0.(重要)如果接入多渠道可以考虑微博微信appid appkey等信息放到服务端,方便临时修改又可避免很多渠道时替换ShareSDK.xml文件出错. 但是cocos2dx-2.x版本使用代码配置a ...

  8. ShareSDK集成微信、QQ、微博分享

    1.前言 为什么要使用第三方的作为集成分享的工具呢?而不去用官方的呢?有什么区别么? 一个字"快",如果你使用官方的得一个个集成他们的SDK,相信这是一个痛苦的过程. 2.准备需要 ...

  9. ShareSDK for Android 只有新浪微博分享

    本文代码例子:http://pan.baidu.com/share/link?shareid=3710053477&uk=3189484501 ShareSDK 官方的例子非常好,但代码太多看 ...

随机推荐

  1. [ Nowcoder Contest 175 #B ] 区间

    \(\\\) \(Description\) 给出一个长度为\(N\)的序列\(A[1]...A[N]\),定义一个合法区间 \([L,R]\) 当且仅当区间\(GCD\) 在这个区间内,求最长合法区 ...

  2. CF848A From Y to Y

    思路1: 每次贪心地选择满足i * (i - 1) / 2 <= k最大的i并从k中减去i * (i - 1) / 2,直至k为0.由于函数x * (x - 1) / 2的增长速度比2x要慢,所 ...

  3. 图标文件ico制作以及使用说明

    今天说一个图标文件——ico.我们在pc端浏览网页的时候网页栏那块都会显示一个本网站特有的图片,就是我们说的ico了.示例:<link href="image/favicon.ico& ...

  4. 树莓派zero_w设置中文(已成功)

    树莓派默认是采用英文字库的,而且系统里没有预装中文字库,所以即使你在locale中改成中文,也不会显示中文,只会显示一堆方块.因此需要我们手动来安装中文字体. 好在有一个中文字体是免费开源使用的.ss ...

  5. Python自动监控错误日志

    平时在查看日志的时候打开满屏的日志,看上去有点凌乱.于是写个Python脚本过滤出想要看的错误的日志.直接上脚本 脚本示例 def read_log(logname,keyword): tell = ...

  6. 联想 Z5 Pro(L78031)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖ZUI 10.0.355

    >>>重点介绍<<< 第一:本刷机包可卡刷可线刷,刷机包比较大的原因是采用同时兼容卡刷和线刷的格式,所以比较大第二:[卡刷方法]卡刷不要解压刷机包,直接传入手机后用 ...

  7. JAVA环境变量配置后未变动配置失效处理

    环境: Windows 7 x64 配置方案来源于教程: http://www.mamicode.com/info-detail-563355.html 配置方案出现的问题: 正确配置JAVA环境变量 ...

  8. (转)版本管理工具介绍——SVN篇(二)

    http://blog.csdn.net/yerenyuan_pku/article/details/72620498 上一篇文章我介绍了一下SVN,以及SVN服务器的安装,相信大家都安装了,接下来我 ...

  9. Android Measure 体系简单总结

    Android对View的测量是半协商半强制半模糊半具体的. 测量过程中的两套尺寸体系:  [半强制] ParentView**约束ChildView: **MeasureSpec(通过measure ...

  10. solr 6.5.1 linux 环境安装

    前言 最近在研究搜索引擎,准备搭建一套属于自己的搜索APP,用于搜索的数据我已通过scrapy抓到本地了,现在需要一个搜索引擎来跑这些数据.于是选择了基于Lucene的solr来为我做搜索引擎的工作. ...