在前面我写了两篇关于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. Spring.Net学习笔记(2)-依赖注入

    一.开发环境 操作系统:Win10 编译器:VS2013 framework版本:.net 4.5 Spring版本:1.3.1 二.涉及程序集 Spring.Core.dll Common.Logg ...

  2. Python之绘图和可视化

    Python之绘图和可视化 1. 启用matplotlib 最常用的Pylab模式的IPython(IPython --pylab) 2. matplotlib的图像都位于Figure对象中. 可以使 ...

  3. React Native组件的结构和生命周期

    React Native组件的结构和生命周期 一.组件的结构 1.导入引用 可以理解为C++编程中的头文件. 导入引用包括导入react native定义的组件.API,以及自定义的组件. 1.1 导 ...

  4. zencart,分类,所有,显示

    改的文件:includes/classes/category_tree.php,最简单的修改 if (!isset($first_element)) {        $first_element = ...

  5. HDU_2544_最短路

    题意:第一个路口是起点,第n个(最后一个)路口是终点,问最短路径. 总结:第一个dijkstra. 代码: #include<iostream> #include<cstdio> ...

  6. Linux终端常用快捷操作

    命令或文件名自动补全:在输入命令或文件名的前几个字母后,按Tab键,系统会自动补全或提示补全 上下箭头:使用上下箭头可以回溯之前的命令,增加命令的重用,减少输入工作量 !加之前输入过的命令的前几个字母 ...

  7. 04Microsoft SQL Server 数据库创建,查看,使用,修改及删除

    Microsoft SQL Server 数据库创建,查看,使用,修改及删除 创建数据库 创建普通数据库 USE [master] GO CREATE DATABASE [MyDataBase] -- ...

  8. Appium 的xpath定位

    Appium 的xpath定位 1.如果元素text是唯一的,可以通过text文本定位 //*[@text=’text文本属性’] # 定位text driver.find_element_by_xp ...

  9. 常量、变量;基本数据类型;input()、if、while、break、continue

    一.编译型语言和解释型语言区别:编译型:一次性将所有程序编译成二进制文件 缺点:开发效率低,不能跨平台 优点:运行速度快. 例如:C,C++等解释型:当程序执行时,一行一行的解释 优点:开发效率高,可 ...

  10. Unity高像素截图

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/51386272 作者:car ...