`

android-----------新浪微博

阅读更多
新浪微博:
包含功能:
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
分享到:
评论
2 楼 donala_zq 2013-11-30  
显示:[2013-11-30 11:50:36 - Android SDK] Warning when loading the SDK:

Warning: Ignoring sample 'ApiDemos': does not contain source.properties.
Warning: Ignoring sample 'BluetoothChat': does not contain source.properties.
Warning: Ignoring sample 'ContactManager': does not contain source.properties.
Warning: Ignoring sample 'CubeLiveWallpaper': does not contain source.properties.
Warning: Ignoring sample 'GestureBuilder': does not contain source.properties.
Warning: Ignoring sample 'Home': does not contain source.properties.
Warning: Ignoring sample 'JetBoy': does not contain source.properties.
Warning: Ignoring sample 'LunarLander': does not contain source.properties.
Warning: Ignoring sample 'MultiResolution': does not contain source.properties.
Warning: Ignoring sample 'NotePad': does not contain source.properties.
Warning: Ignoring sample 'SearchableDictionary': does not contain source.properties.
Warning: Ignoring sample 'SkeletonApp': does not contain source.properties.
Warning: Ignoring sample 'Snake': does not contain source.properties.
Warning: Ignoring sample 'SoftKeyboard': does not contain source.properties.
Warning: Ignoring sample 'Wiktionary': does not contain source.properties.
Warning: Ignoring sample 'WiktionarySimple': does not contain source.properties.
[2013-11-30 11:51:14 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
[2013-11-30 11:51:14 - SinaLoginTest] Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
1 楼 donala_zq 2013-11-30  
哥,运行不了啊

相关推荐

    新浪微博Android版实例开发视频教程

    教程名称: 新浪微博Android版实例开发视频教程【】3G手机Android应用新浪微博:发布01-开发概述【】3G手机Android应用新浪微博:发布02-下载微博sdk【】3G手机Android应用新浪微博:发布03-微博客户端主架构【】3G...

    Android-新浪微博AndroidSDK

    新浪微博 Android SDK

    Android平台新浪微博开发实战视频教程(10集)

    教程名称:Android平台新浪微博开发实战视频教程(10集)教程目录:【】Android项目_-6(上)【】Android项目_新浪微博-4(上)【】Android项目_新浪微博Android客户端开发ppt【】Android项目_新浪微博OAuth认证-4(下)...

    2011年沈大海讲师Android的新浪微博客户端源代码

    基于Android的新浪微博系统开发01-开发概述 基于Android的新浪微博系统开发02-下载微博sdk 基于Android的新浪微博系统开发03-微博客户端主架构 基于Android的新浪微博系统开发04-微博客户端主架构 基于Android的新浪...

    手把手教你开发新浪微博(完整版)

    一个完整的新浪微博客户端android版OAuth认证 开发我的新浪微博客户端-大图浏览以及保存篇 开发我的新浪微博客户端-阅读微博功能篇 开发我的新浪微博客户端-阅读微博UI篇 开发我的新浪微博客户端-用户首页面功能篇 ...

    Android- 新浪微博第三方Android客户端.rar

    本知识点将围绕"Android- 新浪微博第三方Android客户端"这个项目进行深入探讨,旨在为开发者提供一个实践和学习的平台。 首先,该项目的核心是实现对新浪微博API的调用,这要求开发者对OAuth2.0授权机制有深入理解...

    新浪微博----android源码

    《深入剖析新浪微博Android源码》 在移动互联网时代,Android平台上的应用开发已经成为开发者们的重要战场,其中,新浪微博作为一款极具代表性的社交应用,其源码解析对于Android开发者来说具有极高的学习价值。...

    weibo-android-example.rar_android_android 完整_weibo_新浪微博 android

    标题中的“weibo-android-example.rar”表明这是一个关于开发Android版新浪微博客户端的示例项目,而“android_android 完整_weibo_新浪微博 android”这一描述进一步确认了这一点,它提到这个项目是全面展示OAuth...

    Android代码-新浪微博图片缓冲技术.zip

    在Android开发中,图片加载和缓冲是一个至关重要的环节,特别是在处理如新浪微博这样的社交应用时,大量的图片数据需要高效、流畅地展示。这个压缩包“Android代码-新浪微博图片缓冲技术.zip”很可能包含了一些实现...

    Android-for-Xinlang.rar_android_android 网络_android新浪微博_android网络

    在Android平台上进行应用程序开发时,网络功能是不可或缺的一部分,尤其是对于像新浪微博这样的社交应用来说更是如此。本资源“Android-for-Xinlang.rar”专注于讲解如何在Android环境中构建一个简版的新浪微博...

    Android-仿新浪微博下拉刷新继承FrameLayout(源码).zip

    Android-仿新浪微博下拉刷新继承FrameLayout(源码).zip

    Android新浪微博分享

    在Android平台上,实现新浪微博分享是一项常见的社交功能,它允许用户将内容快速地推送到自己的微博账号,以便与好友们分享信息、图片或者链接。本文将详细介绍如何在Android应用中集成新浪微博分享功能,包括授权...

    Android 自定义view-仿新浪微博#话题#插入EditText

    总之,仿照新浪微博的“#话题#”插入EditText的实现涉及自定义View的创建、事件监听、文本处理等多个环节,需要对Android系统的UI机制有深入理解。通过这样的自定义组件,开发者可以为应用增添更多特色功能,提升...

    Android 新浪微博Android客户端-IT计算机-毕业设计.zip

    《Android新浪微博Android客户端:深入解析与毕业设计指南》 在当今移动互联网时代,Android平台以其开源、自由的特点,成为开发者们的重要战场。本资源“Android 新浪微博Android客户端”为一款基于Android平台的...

    本科毕业设计---新浪微博android客户端的实现.docx

    - **项目概述**:本项目旨在为新浪微博开发一款Android客户端应用,以便用户能够在移动设备上更加便捷地使用新浪微博的服务。该应用将实现一系列核心功能,如浏览主页、查看个人信息、关注和粉丝管理、收藏、评论、...

    Android-一个新浪微博安卓客户端的登录和发送微博的案例。

    一个新浪微博安卓客户端的登录和发送微博的案例。

Global site tag (gtag.js) - Google Analytics