新浪分享比较简单,新浪有提供完整的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新浪分享实例的更多相关文章

  1. 如何利用php+android+新浪sae服务器做一个app下载应用

    功能简介:提供一个app下载的平台,类似于appstore,上面有很多app可供下载 实现基本思路:利用android,在手机桌面建立一个图标,点击该图标不是打开app应用,而是跳转到一个web页面, ...

  2. Android 新浪博客分享问题总结

     分类: android(33)  版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 我遇到BUG 1    sso package or singn error Bug2 ...

  3. qq,新浪分享

    var _title,_source,_sourceUrl,_pic,_showcount,_desc,_summary,_site; // 新浪微博分享$('.xlwb-share').on('cl ...

  4. 接入新浪、腾讯微博和人人网的Android客户端实例 接入新浪、腾讯微博和人人网的Android客户端实例

    做了个Android项目,需要接入新浪微博,实现时也顺带着研究了下腾讯微博和人人网的Android客户端接入,本文就跟大家分享下三者的Android客户端接入方法. 一.实例概述 说白了,接入微博就是 ...

  5. 新浪通过API分享 实践

    注:如果集成了百度的Frontia和SinaCoreSDK, 那么SSO会出现包冲突 https://github.com/sinaweibosdk/weibo_android_sdk/issues/ ...

  6. andriod 实现新浪、QQ场地、朋友微信圈、微信朋友分享功能

    前言:在自己的学习过程中的一些操作,分享一些理解. 下面将说明什么: 下载链接:http://download.csdn.net/detail/u014608640/7490357 首先.我们须要去S ...

  7. QQ 微信 新浪 无法 分享 收集

    1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Secur ...

  8. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  9. Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解

    Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756 ...

随机推荐

  1. Android面试题收集(有具体答案)

    Android面试题目及其答案 1.Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每个Android应用程序都在它自己的进程中执行,都 ...

  2. shell语法简单介绍

    一.基本的语法 1.1.shell文件开头 shell文件必须以以下的行開始(必须方在文件的第一行):  #!/bin/sh  符号#!用来告诉系统它后面的參数是用来运行该文件的程序.在这个样例中我们 ...

  3. java--socket实现一个client像还有一个client发送信息

    首先建立接收方socket服务端 package com.haier.socket.server; import java.io.BufferedReader; import java.io.Inpu ...

  4. paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制

    源地址:http://blog.csdn.net/attilax/article/details/12343625 paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制 效果图: ...

  5. Libgdx实现异步加载网络图片并保存到SD卡或者data/data目录下边

    Libgdx实现异步加载网络图片并保存到SD卡或者data/data目录下边,当本地有图片的时候,直接从本地读取图片,如果本地没有图片,将从服务器异步加载图片 package com.example. ...

  6. 简单的javascript抽奖程序

    <html>  <head>   <title>手机号码抽奖程序</title>   <script>    //声明一个数组装住号码,可根 ...

  7. [ACM] 九度OJ 1553 时钟

    时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1733 解决:656 题目描写叙述: 如图,给定随意时刻,求时针和分针的夹角(劣弧所相应的角). 输入: 输入包括多组測试数据.每组測试数 ...

  8. <转载>如何解决子级用float浮动父级div高度不能自适应的问题

    转载:http://www.kwstu.com/ArticleView/divcss_2013101582430202 解决子级对象使用css float浮动 而父级div不能自适应高度,不能被父级内 ...

  9. 利用ArrayList对Hashtable其进行排序

    前言: 最近在使用Hashtable的时候发现一个问题:就是当你对Hashtable进行遍历的时候整个输出结果是毫无顺序的, 上网查了一下说是Hashtable有自己内部的排序机制,如果要自定义排序的 ...

  10. Enterprise Solution 企业管理软件开发框架

    Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架 Enterprise Solution 是一套管理软件开发框架,在 ...