新浪微博:
包含功能:
1,新浪微博的登录
2,获取新浪用户的头像、昵称、性别
3,分享图片、文字到新浪微博
工程结构图:
[img]
[/img]
主类:
package com.amaker.sina;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.SoftReference;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import org.json.JSONObject;
import com.weibo.net.AccessToken;
import com.weibo.net.AsyncWeiboRunner;
import com.weibo.net.DialogError;
import com.weibo.net.Utility;
import com.weibo.net.Weibo;
import com.weibo.net.WeiboDialogListener;
import com.weibo.net.WeiboException;
import com.weibo.net.WeiboParameters;
import com.weibo.net.AsyncWeiboRunner.RequestListener;
import com.weibo.util.Authorize;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class SinaLoginActivity extends Activity implements RequestListener {
public static final String SAVE_PIC_PATH =
Environment.getExternalStorageDirectory() + "/meilijie/imgs/";
private HashMap<String, SoftReference<Drawable>> imageCache = new HashMap<String, SoftReference<Drawable>>();
private Button btn_login;
private Button btn_save;
private Button btn_share;
private ImageView img_sina;
private TextView txt_sina;
private TextView txt_sex;
private String uid;
private String pic_url = "http://img.imeilijie.com/type/bag/tid/235114.jpg";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
//登陆新浪微博
btn_login.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
LoginSina();
}
});
//保存一张图片到SD卡
btn_save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(SinaLoginActivity.this,SavePictureActivity.class);
startActivity(intent);
}
});
//分享图片到新浪微博
btn_share.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ShareToSina();
}
});
}
// 初始化控件
public void init() {
btn_login = (Button) findViewById(R.id.btn_login);
btn_save = (Button) findViewById(R.id.btn_save);
btn_share = (Button) findViewById(R.id.btn_share);
img_sina = (ImageView) findViewById(R.id.img_sina);
txt_sina = (TextView) findViewById(R.id.txt_sina);
txt_sex = (TextView) findViewById(R.id.txt_sex);
}
public void LoginSina() {
// Oauth2.0
// 隐式授权认证方式
// 获取微博实体类,传入appKey,appSecert,callback_url
Weibo weibo = Weibo.getInstance();
weibo.setupConsumerConfig(Authorize.CONSUMER_KEY,
Authorize.CONSUMER_SECRET);
// 此处回调页内容应该替换为与appKey对应的应用回调页
weibo.setRedirectUrl("http://www.meilijie.com");
// 对应的应用回调页可在开发者登陆新浪微博开发平台之后,
// 进入我的应用--应用详情--应用信息--高级信息--授权设置--应用回调页进行设置和查看,
// 应用回调页不可为空
// 启动认证
weibo.authorize(SinaLoginActivity.this, new AuthDialogListener());
}
// 用于新浪登录
class AuthDialogListener implements WeiboDialogListener {
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
AccessToken accessToken = new AccessToken(token,
Authorize.CONSUMER_SECRET);
accessToken.setExpiresIn(expires_in);
Weibo.getInstance().setAccessToken(accessToken);
uid = values.getString("uid");
try {
getCounts(Weibo.getInstance());
} catch (Exception e) {
e.printStackTrace();
}
/*
* Intent intent = new Intent(MainActivity.this,SinaActivity.class);
* intent.putExtra("uid", uid + ""); startActivity(intent);
*/
}
public void onError(DialogError e) {
Toast.makeText(getApplicationContext(),
"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
public void onCancel() {
Toast.makeText(getApplicationContext(), "Auth cancel",
Toast.LENGTH_LONG).show();
}
public void onWeiboException(WeiboException e) {
Toast.makeText(getApplicationContext(),
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
// 新浪登录 获取用户资料
public String getCounts(Weibo weibo) throws Exception {
String url = Weibo.SERVER + "users/show.json";
WeiboParameters bundle = new WeiboParameters();
bundle.add("source", Weibo.getAppKey());
bundle.add("uid", uid);
String rlt = weibo.request(this, url, bundle, "GET", weibo
.getAccessToken());
JSONObject jsonObject = new JSONObject(rlt);
String name = jsonObject.getString("screen_name");
String pic = jsonObject.getString("profile_image_url");
String gender = jsonObject.getString("gender");
String sex;
if (gender.equalsIgnoreCase("m")) {
sex = "男";
} else if (gender.equalsIgnoreCase("f")) {
sex = "女";
} else {
sex = "未知";
}
Bitmap bitmap = Authorize.returnBitMap(pic);
img_sina.setImageBitmap(bitmap);
txt_sina.setText("用户名:" + name);
txt_sex.setText(" 性别:" + sex);
return rlt;
}
//新浪分享
public void ShareToSina(){
File file = Environment.getExternalStorageDirectory();
String sdPath = file.getAbsolutePath();
// 请保证SD卡根目录下有这张图片文件
String picPath = sdPath + "/meilijie/imgs/" + "test.jpg";
Log.i("test", "picPath:" + picPath);
File picFile = new File(picPath);
if (!picFile.exists()) {
Toast.makeText(SinaLoginActivity.this, "图片" + picPath + "不存在!",
Toast.LENGTH_SHORT).show();
picPath = null;
}
try {
String mContent = "测试图片新浪微博分享===李彩娜" +pic_url;
Weibo weibo = Weibo.getInstance();
upload(weibo, Weibo.getAppKey(), picPath, mContent, "", "");
} catch (WeiboException e) {
e.printStackTrace();
}
}
//新浪分享
private String upload(Weibo weibo, String source, String file, String status,
String lon, String lat) throws WeiboException {
String url = Weibo.SERVER + "statuses/upload.json";
WeiboParameters bundle = new WeiboParameters();
bundle.add("source", source);
//要上传的图片,仅支持JPEG、GIF、PNG格式,图片大小小于5M。
bundle.add("pic", file);
//要发布的微博文本内容,必须做URLencode,内容不超过140个汉字。
bundle.add("status", status);
if (!TextUtils.isEmpty(lon)) {
bundle.add("lon", lon);
}
if (!TextUtils.isEmpty(lat)) {
bundle.add("lat", lat);
}
String rlt = "";
AsyncWeiboRunner weiboRunner = new AsyncWeiboRunner(weibo);
weiboRunner.request(this, url, bundle, Utility.HTTPMETHOD_POST, this);
return rlt;
}
@Override
public void onComplete(String response) {
}
@Override
public void onError(WeiboException e) {
}
@Override
public void onIOException(IOException e) {
}
}
- 大小: 41.5 KB
分享到:
相关推荐
教程名称: 新浪微博Android版实例开发视频教程【】3G手机Android应用新浪微博:发布01-开发概述【】3G手机Android应用新浪微博:发布02-下载微博sdk【】3G手机Android应用新浪微博:发布03-微博客户端主架构【】3G...
新浪微博 Android SDK
教程名称:Android平台新浪微博开发实战视频教程(10集)教程目录:【】Android项目_-6(上)【】Android项目_新浪微博-4(上)【】Android项目_新浪微博Android客户端开发ppt【】Android项目_新浪微博OAuth认证-4(下)...
基于Android的新浪微博系统开发01-开发概述 基于Android的新浪微博系统开发02-下载微博sdk 基于Android的新浪微博系统开发03-微博客户端主架构 基于Android的新浪微博系统开发04-微博客户端主架构 基于Android的新浪...
一个完整的新浪微博客户端android版OAuth认证 开发我的新浪微博客户端-大图浏览以及保存篇 开发我的新浪微博客户端-阅读微博功能篇 开发我的新浪微博客户端-阅读微博UI篇 开发我的新浪微博客户端-用户首页面功能篇 ...
本知识点将围绕"Android- 新浪微博第三方Android客户端"这个项目进行深入探讨,旨在为开发者提供一个实践和学习的平台。 首先,该项目的核心是实现对新浪微博API的调用,这要求开发者对OAuth2.0授权机制有深入理解...
《深入剖析新浪微博Android源码》 在移动互联网时代,Android平台上的应用开发已经成为开发者们的重要战场,其中,新浪微博作为一款极具代表性的社交应用,其源码解析对于Android开发者来说具有极高的学习价值。...
标题中的“weibo-android-example.rar”表明这是一个关于开发Android版新浪微博客户端的示例项目,而“android_android 完整_weibo_新浪微博 android”这一描述进一步确认了这一点,它提到这个项目是全面展示OAuth...
在Android开发中,图片加载和缓冲是一个至关重要的环节,特别是在处理如新浪微博这样的社交应用时,大量的图片数据需要高效、流畅地展示。这个压缩包“Android代码-新浪微博图片缓冲技术.zip”很可能包含了一些实现...
在Android平台上进行应用程序开发时,网络功能是不可或缺的一部分,尤其是对于像新浪微博这样的社交应用来说更是如此。本资源“Android-for-Xinlang.rar”专注于讲解如何在Android环境中构建一个简版的新浪微博...
Android-仿新浪微博下拉刷新继承FrameLayout(源码).zip
在Android平台上,实现新浪微博分享是一项常见的社交功能,它允许用户将内容快速地推送到自己的微博账号,以便与好友们分享信息、图片或者链接。本文将详细介绍如何在Android应用中集成新浪微博分享功能,包括授权...
总之,仿照新浪微博的“#话题#”插入EditText的实现涉及自定义View的创建、事件监听、文本处理等多个环节,需要对Android系统的UI机制有深入理解。通过这样的自定义组件,开发者可以为应用增添更多特色功能,提升...
《Android新浪微博Android客户端:深入解析与毕业设计指南》 在当今移动互联网时代,Android平台以其开源、自由的特点,成为开发者们的重要战场。本资源“Android 新浪微博Android客户端”为一款基于Android平台的...
- **项目概述**:本项目旨在为新浪微博开发一款Android客户端应用,以便用户能够在移动设备上更加便捷地使用新浪微博的服务。该应用将实现一系列核心功能,如浏览主页、查看个人信息、关注和粉丝管理、收藏、评论、...
一个新浪微博安卓客户端的登录和发送微博的案例。