Android实现微博分享及其注意事项
在前面我写了两篇关于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实现微博分享及其注意事项的更多相关文章
- Android实现微信分享及注意事项
一.获取帮助文档并下载相关资料 首先打开微信开放平台:https://open.weixin.qq.com/ 如果没有注册,请先注册并上传开发者资料等待审核. 资源中心----移动应用开发----分享 ...
- android shareSDK 微博分享案例
android shareSDK 微博分享案例 ShareSDK APP_KEY 219b1121fc68 腾讯微博 key 801517904 secret bfba83ae253c8f38dabe ...
- Android实现QQ分享及注意事项
一.获取APPID和帮助文档 在前面我介绍了关于Android中微信分享的文章< Android实现微信分享及注意事项>这一篇文章来看看关于QQ分享. 可以参看新手引导和接入说明:http ...
- android 入门-微博分享
[2015-03-11 13:40:32 - WeiboSDK] Unable to resolve target 'android-8' 修改project.properties target=a ...
- Android Studio 独立引入(非友盟)微博分享和回调时问题
最近同事在做一个小项目时,由于产品的要求,Wap页面的分享规定不能使用友盟的社会化组件.他则不得不手动一个一个渠道的引入分享,好在渠道不多就三个,但是第一微博分享引入的时候问题就出现了. 问题一:li ...
- Android 调用系统分享文字、图片、文件,可直达微信、朋友圈、QQ、QQ空间、微博
原文:Android 调用系统分享文字.图片.文件,可直达微信.朋友圈.QQ.QQ空间.微博 兼容SDK 18以上的系统,直接调用系统分享功能,分享文本.图片.文件到第三方APP,如:微信.QQ.微博 ...
- 微信微博分享注意事项(sharesdk)
0.(重要)如果接入多渠道可以考虑微博微信appid appkey等信息放到服务端,方便临时修改又可避免很多渠道时替换ShareSDK.xml文件出错. 但是cocos2dx-2.x版本使用代码配置a ...
- ShareSDK集成微信、QQ、微博分享
1.前言 为什么要使用第三方的作为集成分享的工具呢?而不去用官方的呢?有什么区别么? 一个字"快",如果你使用官方的得一个个集成他们的SDK,相信这是一个痛苦的过程. 2.准备需要 ...
- ShareSDK for Android 只有新浪微博分享
本文代码例子:http://pan.baidu.com/share/link?shareid=3710053477&uk=3189484501 ShareSDK 官方的例子非常好,但代码太多看 ...
随机推荐
- es6 export-from用法
语法: export * from "foo"; export {foo} from "foo"; export {foo, bar} from "f ...
- Js onmouseover和onmouseout小特效
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- 全志tina v3.0系统编译时的时间错误的解决(全志SDK的维护BUG)
全志tina v3.0系统编译时的时间错误的解决(全志SDK的维护BUG) 2018/6/13 15:52 版本:V1.0 开发板:SC3817R SDK:tina v3.0 1.01原始编译全志r1 ...
- 好用的sublime插件以及快捷键
管理插件:使用Ctrl+`(Esc键下方)快捷键或者通过View->Show Console菜单打开命令行 import urllib.request,os,hashlib; h = '2915 ...
- Gitlab forbidden
搭建使用了两年的gitlab 抽风了居然forbidden # vim /etc/gitlab/gitlab.rb gitlab_rails['rack_attack_git_basic_auth'] ...
- @ExceptionHandler和@ControllerAdvice统一处理异常
//@ExceptionHandler和@ControllerAdvice统一处理异常//统一处理异常的controller需要放在和普通controller同级的包下,或者在ComponentSca ...
- 【Hadoop】四、HDFS的java接口
Hadoop是用java语言实现的,因此HDFS有很好的java接口用以编程,重点就是Hadoop的FileSystem类,它是所有文件系统的抽象类,HDFS实例(DistributedFileS ...
- Java笔记——String、StringBuffer和StringBuilder类
String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符串序列是不可改变的,直至这个对象被销毁. StringBuffer对象则代表一个字符序列可变的字符串,当一个S ...
- layer iframe层ajax回调弹出layer.msg()
ajax success方法 success: function(data){ layer.msg("输入你需要的提示",{time:1000,end:function(){ // ...
- 数字图像处理技术在TWaver可视化中的应用
数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程.常用的图像处理方法有图像增强.复原.编码.压缩等,数 ...