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.api.UsersAPI;
import com.weibo.sdk.android.net.RequestListener;


public class MainActivity extends Activity {
private Weibo mWeibo;
private static final String CONSUMER_KEY = "1587758551";// App_key 创建应用获得
private static final String REDIRECT_URL = "http://www.sina.com";      //回调地址,必须和注册时候填写的一致
public static Oauth2AccessToken accessToken;
private ProgressDialog dialog;
private Message message;
private UsersAPI usersAPI;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWeibo = Weibo.getInstance(CONSUMER_KEY, REDIRECT_URL);
accessToken = SaveDate.getDate(this);


}


public void sendContent1(View view) { // 发送纯文本的方法
dialog = ProgressDialog.show(this, "处理中", "请稍等");
dialog.setCanceledOnTouchOutside(true);
sendContent();


}


public void getContent(View view) {     //获取用户信息
if (accessToken.isSessionValid()) {
message = new Message();
dialog = ProgressDialog.show(this, "处理中", "请稍等");
usersAPI = new UsersAPI(accessToken);
usersAPI.show(Long.parseLong(SaveDate.get(this, "uid")),
new RequestListener() {


@Override
public void onIOException(IOException arg0) {
Log.i("hck", "onIOException " + arg0);
message.what = 0;
handler.sendMessage(message);
}


@Override
public void onError(WeiboException arg0) {
Log.i("hck", "onError " + arg0);
message.what = 0;
handler.sendMessage(message);
}


@Override
public void onComplete(String arg0) {


message.what = 1;
message.obj = arg0;
message.arg1 = 1;
handler.sendMessage(message);
}
});
} else {
mWeibo.authorize(MainActivity.this, new AuthDialogListener());
}
}


Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if (dialog != null) {
dialog.dismiss();
}
if (msg.what == 1 && msg.arg1 != 1) {
Toast.makeText(MainActivity.this, "发送成功", Toast.LENGTH_LONG)
.show();
} else if (msg.arg1 == 1 && msg.what == 1) {
Toast.makeText(MainActivity.this, msg.obj.toString(),
Toast.LENGTH_LONG).show();
Log.i("hck", msg.obj.toString());
} 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(this, new AuthDialogListener());
}
}


private void sendContent() {
if (accessToken.isSessionValid()) {
new StatusesAPI(accessToken).update("新浪微博测试33377777", null, null,
new listener());
} else {
mWeibo.authorize(this, new AuthDialogListener());


}
}


class listener implements RequestListener {


@Override

public void onComplete(String arg0) {

if (dialog!=null) {

dialog.dismiss();

}

message = new Message();
message.what = 1;
handler.sendMessage(message);


}


@Override
public void onError(WeiboException arg0) {

if (dialog!=null) {

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) {


if (dialog!=null) {

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");
String userIdString = values.getString("uid");
accessToken = new Oauth2AccessToken(token, expires_in);
if (accessToken.isSessionValid()) {
SaveDate.save(MainActivity.this, "uid", userIdString);
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;
}
public static void save(Context context,String key,String value)
{
preferences = context
.getSharedPreferences("save", Context.MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putString(key, value);
editor.commit();
}
public static String get(Context context,String key)
{
preferences = context
.getSharedPreferences("save", Context.MODE_PRIVATE);
return preferences.getString(key, null);
}
}


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="getContent"

        />

    <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>




demo:(demo里面有点小问题,请在demo里面加上博客中空色代码,判断dialog是否为空的,不为空,才影藏,不然会出现空指针)demo

本demo是基于新浪旧版本sdk实现的,现在申请的新的key,不能使用该代码和demo(后面会重新给出新的代码和demo)

//第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"}

错误

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值