android新浪分享实例
新浪分享比较简单,新浪有提供完整的demo。
android实现新浪的分享功能,分3种分享情况:
纯文本的,带图片的,图片为本地图片(传入的是图片在手机的地址),第2种带图片的是,网络图片,图片地址为网络地址url
首先到新浪开放平台,注册账号,创建应用,注意的是请点击应用,选择高级信息,在里面设置上回调页面
回调页随便填写一个就行
下载sdk包,把包加入libs下面,引入
主类:
package com.sharedemo;
import java.io.IOException;
import java.text.SimpleDateFormat;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.weibo.sdk.android.Oauth2AccessToken;
import com.weibo.sdk.android.Weibo;
import com.weibo.sdk.android.WeiboAuthListener;
import com.weibo.sdk.android.WeiboDialogError;
import com.weibo.sdk.android.WeiboException;
import com.weibo.sdk.android.api.StatusesAPI;
import com.weibo.sdk.android.net.RequestListener;
public class MainActivity extends Activity {
private Weibo mWeibo;
private static final String CONSUMER_KEY = "1587758551";// App_key 你创建应用时候获取的key
private static final String REDIRECT_URL = "http://www.sina.com"; //回调页面,你自己设置的,2者必须一模一样
public static Oauth2AccessToken accessToken;
private ProgressDialog dialog;
private Message message;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWeibo = Weibo.getInstance(CONSUMER_KEY, REDIRECT_URL); //初始化微博
accessToken = SaveDate.getDate(this); //获取我们保存的token
}
public void sendContent1(View view) { //发送纯文本的方法
dialog = ProgressDialog.show(this, "处理中", "请稍等");
dialog.setCanceledOnTouchOutside(true);
sendContent();
}
Handler handler=new Handler()
{
public void handleMessage(android.os.Message msg) {
if (msg.what==1) {
Toast.makeText(MainActivity.this, "发送成功", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(MainActivity.this, "发送失败:"+msg.obj.toString(), Toast.LENGTH_LONG).show();
}
};
};
public void sendContent2(View view) { //带图片的方法,图片为本机里面的图片
if (accessToken.isSessionValid()) {
dialog = ProgressDialog.show(this, "处理中", "请稍等");
String fiString = Environment.getExternalStorageDirectory()
.toString() + "/sina.png";
new StatusesAPI(accessToken).upload("图片分享", fiString, "", "",
new listener());
} else {
mWeibo.authorize(MainActivity.this, new AuthDialogListener());
}
}
public void sendContent3(View view) { //带图片的方法,图片为网络图片
if (accessToken.isSessionValid()) {
dialog = ProgressDialog.show(this, "处理中", "请稍等");
new StatusesAPI(accessToken).uploadUrlText("图片分享222","http://h.hiphotos.baidu.com/album/w%3D2048/sign=ba4fd5d5d0c8a786be2a4d0e5331c83d/d1160924ab18972b4b5775e5e7cd7b899e510aab.jpg", "", "",
new listener());
} else {
mWeibo.authorize(getApplicationContext(), new AuthDialogListener());
}
}
private void sendContent() {
if (accessToken.isSessionValid()) {
new StatusesAPI(accessToken).update("新浪微博测试33377777", null, null,
new listener());
} else {
mWeibo.authorize(getApplicationContext(), new AuthDialogListener());
}
}
class listener implements RequestListener {
@Override
public void onComplete(String arg0) {
dialog.dismiss();
message=new Message();
message.what=1;
handler.sendMessage(message);
Log.i("hck", arg0);
}
@Override
public void onError(WeiboException arg0) {
dialog.dismiss();
message=new Message();
message.what=0;
message.obj=arg0;
handler.sendMessage(message);
Log.i("hck", "onError" + arg0 + "");
}
@Override
public void onIOException(IOException arg0) {
dialog.dismiss();
message=new Message();
message.what=0;
message.obj=arg0;
handler.sendMessage(message);
Log.i("hck", arg0 + "");
}
}
class AuthDialogListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
accessToken = new Oauth2AccessToken(token, expires_in);
if (accessToken.isSessionValid()) {
sendContent();
SaveDate.saveDate(MainActivity.this, accessToken);
}
}
@Override
public void onError(WeiboDialogError e) {
Toast.makeText(getApplicationContext(),
"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "Auth cancel",
Toast.LENGTH_LONG).show();
}
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(getApplicationContext(),
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
}
保存数据的类:
package com.sharedemo;
import com.weibo.sdk.android.Oauth2AccessToken;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
public class SaveDate {
private static SharedPreferences preferences;
public SaveDate(Context context) {
}
public static void saveDate(Context context, Oauth2AccessToken token) {
preferences = context
.getSharedPreferences("save", Context.MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putString("token", token.getToken());
editor.putLong("expiresTime", token.getExpiresTime());
editor.commit();
}
public static Oauth2AccessToken getDate(Context context)
{
preferences = context
.getSharedPreferences("save", Context.MODE_PRIVATE);
Oauth2AccessToken token = new Oauth2AccessToken();
token.setToken(preferences.getString("token", ""));
token.setExpiresTime(preferences.getLong("expiresTime", 0));
return token;
}
}
xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:gravity="center"
android:orientation="vertical"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送一条纯文本微博"
android:onClick="sendContent1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送一带图片的微博"
android:onClick="sendContent2"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送一条带图片和url的微博"
android:onClick="sendContent3"
/>
</LinearLayout>
//第3个方法的使用需要,你的应用提交审核通过后,在借口管理,申请权限里面,申请相应的权限,才能使用,不然后报
06-24 15:35:02.837: I/hck(32697): onErrorcom.weibo.sdk.android.WeiboException: {"error":"Insufficient app permissions!","error_code":10014,"request":"/2/statuses/upload_url_text.json"}
错误
android新浪分享实例的更多相关文章
- 如何利用php+android+新浪sae服务器做一个app下载应用
功能简介:提供一个app下载的平台,类似于appstore,上面有很多app可供下载 实现基本思路:利用android,在手机桌面建立一个图标,点击该图标不是打开app应用,而是跳转到一个web页面, ...
- Android 新浪博客分享问题总结
分类: android(33) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 我遇到BUG 1 sso package or singn error Bug2 ...
- qq,新浪分享
var _title,_source,_sourceUrl,_pic,_showcount,_desc,_summary,_site; // 新浪微博分享$('.xlwb-share').on('cl ...
- 接入新浪、腾讯微博和人人网的Android客户端实例 接入新浪、腾讯微博和人人网的Android客户端实例
做了个Android项目,需要接入新浪微博,实现时也顺带着研究了下腾讯微博和人人网的Android客户端接入,本文就跟大家分享下三者的Android客户端接入方法. 一.实例概述 说白了,接入微博就是 ...
- 新浪通过API分享 实践
注:如果集成了百度的Frontia和SinaCoreSDK, 那么SSO会出现包冲突 https://github.com/sinaweibosdk/weibo_android_sdk/issues/ ...
- andriod 实现新浪、QQ场地、朋友微信圈、微信朋友分享功能
前言:在自己的学习过程中的一些操作,分享一些理解. 下面将说明什么: 下载链接:http://download.csdn.net/detail/u014608640/7490357 首先.我们须要去S ...
- QQ 微信 新浪 无法 分享 收集
1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Secur ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解
Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756 ...
随机推荐
- 如何使用springmvc的@requestbody 返回json数据
先配置 XXX_ servletxml <!-- 整合jackson 返回一个json格式 --><bean class="org.springframework.web. ...
- POJ 2404 Jogging Trails
Jogging Trails Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2122 Accepted: 849 Des ...
- CloudStack 4.2 新功能:集成SNMP进行系统监控(原理篇)
作者微博:http://weibo.com/tianchunfeng CloudStack 4.2 版本发布在即,相信不久后对 4.2 版本新功能(共有13个)的介绍会逐渐多起来.因为无论是从架构底层 ...
- VS2010+QT4.8.5 +FastReport教程
如需转载请标明出处:http://blog.csdn.net/itas109 採用QT 的QAxObject方式执行FastReport特别麻烦,并且无法在编译的时候知道代码是否正确,并且大部分的函数 ...
- 微软C#版SQLHelper.cs类
转载自:http://blog.csdn.net/fengqingtao2008/article/details/17399247 using System; using System.Data; u ...
- Windows Azure入门教学系列 (九):Windows Azure 诊断功能
本文是Windows Azure入门教学的第九篇文章. 本文将会介绍如何使用Windows Azure 诊断功能.跟部署在本地服务器上的程序不同,当我们的程序发布到云端之后,我们不能使用通常的调试方法 ...
- Android之一个简单计算器源代码
通过Android4.0 网格布局GridLayout来实现一个简单的计算器界面布局 源码如下(欢迎大家指导 批评 ) package com.android.xiong.gridlayoutTe ...
- Hadoop应用开发实战(flume应用开发、搜索引擎算法、Pipes、集群、PageRank算法)
Hadoop是2013年最热门的技术之一,通过北风网robby老师<深入浅出Hadoop实战开发>.<Hadoop应用开发实战>两套课程的学习,普通Java开发人员可以在最快的 ...
- cocos2d-x游戏开发 跑酷(两) 物理世界
原创.转载请注明出处:http://blog.csdn.net/dawn_moon/article/details/21240343 泰然的跑酷用的chipmunk物理引擎.我没有细致学过这个东西. ...
- 中国本土管理咨询公司排名TOP50
中国本土管理咨询公司排名TOP50 1. 北京正略钧策管理顾问有限公司 2. 北京和君咨询公司 3. 北大纵横管理咨询公司 4. 远卓管理顾问公司 5. AMT管理咨询公司 6. 华夏基石管理咨询有限 ...