zoukankan      html  css  js  c++  java
  • 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"}

    错误

  • 相关阅读:
    Convert、Parse、TryParse、(int)区别及可能引发性能问题
    重写、覆盖、重载、多态几个概念的区别分析
    计算机系统的硬件组成(转)
    如何选择Html.RenderPartial和Html.RenderAction
    位运算(转)
    Java程序员面试中的多线程问题
    请转到控制面板来配置或安装系统组件
    开篇
    DropDownList 不能有多个项被选定!
    有关rollup和cube的使用方法讨论
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3153477.html
Copyright © 2011-2022 走看看