最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)的新浪微博分享代碼實例

 更新時間:2015年03月19日 15:18:41   投稿:hebedich  
這篇文章主要介紹了java實現(xiàn)的新浪微博分享代碼實例,是通過新浪API獲得授權,然后接受客戶端請求的數(shù)據(jù),第三方應用發(fā)送請求消息到微博,喚起微博分享界面,非常的實用,有相同需要的小伙伴可以參考下。

weibo.java

復制代碼 代碼如下:

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 setContentView(R.layout.user_center);
                 // 創(chuàng)建微博實例
                mWeiboAuth = new WeiboAuth(this, Constants.APP_KEY,
                                 Constants.REDIRECT_URL, Constants.SCOPE);
                 // 創(chuàng)建微博分享接口實例
                mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, Constants.APP_KEY);
                 // 當 Activity 被重新初始化時(該 Activity 處于后臺時,可能會由于內(nèi)存不足被殺掉了),
                // 需要調(diào)用 {@link IWeiboShareAPI#handleWeiboResponse} 來接收微博客戶端返回的數(shù)據(jù)。
                // 執(zhí)行成功,返回 true,并調(diào)用 {@link IWeiboHandler.Response#onResponse};
                // 失敗返回 false,不調(diào)用上述回調(diào)
                if (savedInstanceState != null) {
                         mWeiboShareAPI.handleWeiboResponse(getIntent(), this);
                 }
        }
 /**
          * 檢查用戶是否安裝新浪微博
         */
         public void isNotInstall() {
                 try {
                         // 檢查微博客戶端環(huán)境是否正常,如果未安裝微博,彈出對話框詢問用戶下載微博客戶端
                        if (mWeiboShareAPI.checkEnvironment(true)) {
                                 // 注冊第三方應用 到微博客戶端中,注冊成功后該應用將顯示在微博的應用列表中。
                                // 但該附件欄集成分享權限需要合作申請,詳情請查看 Demo 提示
                                mWeiboShareAPI.registerApp();
                                startSinaShare();
                         }
                 } catch (WeiboShareException e) {
                         e.printStackTrace();
                         Toast.makeText(UserCenter.this, e.getMessage(), Toast.LENGTH_LONG)
                                         .show();
                 }
                 if (dialog != null) {
                         dialog.dismiss();
                 }
         }
         /**
          * 微博認證授權回調(diào)類。 1. SSO 授權時,需要在 {@link #onActivityResult} 中調(diào)用
         * {@link SsoHandler#authorizeCallBack} 后, 該回調(diào)才會被執(zhí)行。 2. 非 SSO
          * 授權時,當授權結束后,該回調(diào)就會被執(zhí)行。 當授權成功后,請保存該 access_token、expires_in、uid 等信息到
         * SharedPreferences 中。
         */
         class AuthListener implements WeiboAuthListener {
                 @Override
                 public void onComplete(Bundle values) {
                         // 從 Bundle 中解析 Token
                         mAccessToken = Oauth2AccessToken.parseAccessToken(values);
                         if (mAccessToken.isSessionValid()) {
                                 // 保存 Token 到 SharedPreferences
                                 AccessTokenKeeper.writeAccessToken(UserCenter.this,
                                                 mAccessToken);
                                 sendMessage();
                         }
                 }
                 @Override
                 public void onCancel() {
                 }
                 @Override
                 public void onWeiboException(WeiboException e) {
                         Toast.makeText(UserCenter.this,
                                         "Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
                                         .show();
                 }
         }
         /**
          * 新浪微博用戶授權
         */
         public void startSinaShare() {
                 mSsoHandler = new SsoHandler(UserCenter.this, mWeiboAuth);
                 // 從 SharedPreferences 中讀取上次已保存好 AccessToken 等信息,
                mAccessToken = AccessTokenKeeper.readAccessToken(this);
                 // 如果Token有效,則直接調(diào)用發(fā)送微博
                if (mAccessToken.isSessionValid()) {
                         sendMessage();
                 } else {
                         mSsoHandler.authorize(new AuthListener());
                 }
         }
         /**
          * @See {@link Activity#onNewIntent}
          */
         @Override
         protected void onNewIntent(Intent intent) {
                 super.onNewIntent(intent);
                 // 從當前應用喚起微博并進行分享后,返回到當前應用時,需要在此處調(diào)用該函數(shù)
                // 來接收微博客戶端返回的數(shù)據(jù);執(zhí)行成功,返回 true,并調(diào)用
                // {@link IWeiboHandler.Response#onResponse};失敗返回 false,不調(diào)用上述回調(diào)
                mWeiboShareAPI.handleWeiboResponse(intent, this);
         }
         /**
          * 當 SSO 授權 Activity 退出時,該函數(shù)被調(diào)用。
         *
          * @see {@link Activity#onActivityResult}
          */
         @Override
         protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                 super.onActivityResult(requestCode, resultCode, data);
                 // SSO 授權回調(diào)
                // 重要:發(fā)起 SSO 登陸的 Activity 必須重寫 onActivityResult
                 if (mSsoHandler != null) {
                         mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
                 }
         }
         /**
          * 接收微客戶端博請求的數(shù)據(jù)。 當微博客戶端喚起當前應用并進行分享時,該方法被調(diào)用。
         *
          * @param baseRequest
          *            微博請求數(shù)據(jù)對象
         * @see {@link IWeiboShareAPI#handleWeiboRequest}
          */
         @Override
         public void onResponse(BaseResponse baseResp) {
                 switch (baseResp.errCode) {
                 case WBConstants.ErrorCode.ERR_OK:
                         if (PublicFun.shareCondition()) {
                                 gainBoBi();
                         } else {
                                 Toast.makeText(this, R.string.share_success, Toast.LENGTH_LONG)
                                                 .show();
                         }
                         break;
                 case WBConstants.ErrorCode.ERR_CANCEL:
                         break;
                 case WBConstants.ErrorCode.ERR_FAIL:
                         Toast.makeText(this, R.string.errcode_deny, Toast.LENGTH_LONG)
                                         .show();
                         break;
                 }
                 if (dialog != null) {
                         dialog.dismiss();
                 }
         }
         /**
          * 第三方應用發(fā)送請求消息到微博,喚起微博分享界面。
          * @see {@link #sendMultiMessage} 或者 {@link #sendSingleMessage}
          */
         private void sendMessage() {
                 if (mWeiboShareAPI.isWeiboAppSupportAPI()) {
                         sendMultiMessage();
                 } else {
                         Toast.makeText(this, R.string.sina_share_hint, Toast.LENGTH_SHORT)
                                         .show();
                 }
         }
         /**
          * 第三方應用發(fā)送請求消息到微博,喚起微博分享界面。 注意:當
         * {@link IWeiboShareAPI#getWeiboAppSupportAPI()} >= 10351 時,支持同時分享多條消息,
         *
          * @param hasText
          *            分享的內(nèi)容是否有文本
         * @param hasImage
          *            分享的內(nèi)容是否有圖片
         * @param hasWebpage
          *            分享的內(nèi)容是否有網(wǎng)頁
         */
         private void sendMultiMessage() {
                 // 1. 初始化微博的分享消息
                WeiboMultiMessage weiboMessage = new WeiboMultiMessage();
                 weiboMessage.textObject = getTextObj();
                 // 用戶可以分享其它媒體資源(網(wǎng)頁、音樂、視頻、聲音中的一種)
                weiboMessage.mediaObject = getWebpageObj();
                 // 2. 初始化從第三方到微博的消息請求
                SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest();
                 // 用transaction唯一標識一個請求
                request.transaction = String.valueOf(System.currentTimeMillis());
                 request.multiMessage = weiboMessage;
                 // 3. 發(fā)送請求消息到微博,喚起微博分享界面
                mWeiboShareAPI.sendRequest(request);
                 // 記錄分享日志
                PublicFun.sendShareAppLog(UserCenter.this,
                                 getResources().getString(R.string.micro_blog));
                 if (dialog != null) {
                         dialog.dismiss();
                 }
         }
         /**
          * 創(chuàng)建文本消息對象。
          * @return 文本消息對象。
         */
         private TextObject getTextObj() {
                 TextObject textObject = new TextObject();
                 textObject.text = getResources().getString(R.string.share_content);
                 return textObject;
         }
         /**
          * 創(chuàng)建多媒體(網(wǎng)頁)消息對象。
          * @return 多媒體(網(wǎng)頁)消息對象。
         */
         private WebpageObject getWebpageObj() {
                 WebpageObject mediaObject = new WebpageObject();
                 mediaObject.actionUrl = getString(R.string.share_url);
                 mediaObject.identify = Utility.generateGUID();
                 mediaObject.title = getResources().getString(R.string.share_title);
                 mediaObject.description = getString(R.string.share_content);
                 Bitmap bmp = BitmapFactory.decodeResource(getResources(),
                                 R.drawable.icon);
                 mediaObject.setThumbImage(bmp);
                 return mediaObject;
         }
/**
 * 該類定義了微博授權時所需要的參數(shù)。
 * @author SINA
 * @SINCE 2013-10-07
 */
 public class AccessTokenKeeper {
     private static final String PREFERENCES_NAME = "com_weibo_sdk_android";
     private static final String KEY_UID           = "uid";
     private static final String KEY_ACCESS_TOKEN  = "access_token";
     private static final String KEY_EXPIRES_IN    = "expires_in";
     /**
      * 保存 Token 對象到 SharedPreferences。
     *
      * @param context 應用程序上下文環(huán)境
     * @param token   Token 對象
     */
     public static void writeAccessToken(Context context, Oauth2AccessToken token) {
         if (null == context || null == token) {
             return;
         }
         SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
         Editor editor = pref.edit();
         editor.putString(KEY_UID, token.getUid());
         editor.putString(KEY_ACCESS_TOKEN, token.getToken());
         editor.putLong(KEY_EXPIRES_IN, token.getExpiresTime());
         editor.commit();
     }
     /**
      * 從 SharedPreferences 讀取 Token 信息。
     *
      * @param context 應用程序上下文環(huán)境
     *
      * @return 返回 Token 對象
     */
     public static Oauth2AccessToken readAccessToken(Context context) {
         if (null == context) {
             return null;
         }
         Oauth2AccessToken token = new Oauth2AccessToken();
         SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
         token.setUid(pref.getString(KEY_UID, ""));
         token.setToken(pref.getString(KEY_ACCESS_TOKEN, ""));
         token.setExpiresTime(pref.getLong(KEY_EXPIRES_IN, 0));
         return token;
     }
     /**
      * 清空 SharedPreferences 中 Token信息。
     *
      * @param context 應用程序上下文環(huán)境
     */
     public static void clear(Context context) {
         if (null == context) {
             return;
         }
         SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
         Editor editor = pref.edit();
         editor.clear();
         editor.commit();
     }
 }

以上所述就是本文的全部內(nèi)容了,希望對大家熟練掌握java有所幫助。

相關文章

  • Java文件讀寫IO/NIO及性能比較詳細代碼及總結

    Java文件讀寫IO/NIO及性能比較詳細代碼及總結

    這篇文章主要介紹了Java文件讀寫IO/NIO及性能比較詳細代碼及總結,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 解讀spring.factories文件配置詳情

    解讀spring.factories文件配置詳情

    這篇文章主要介紹了解讀spring.factories文件配置詳情,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Java Hibernate對象(瞬時態(tài),持久態(tài),脫管態(tài))詳解

    Java Hibernate對象(瞬時態(tài),持久態(tài),脫管態(tài))詳解

    這篇文章主要介紹了Java Hibernate對象(瞬時態(tài),持久態(tài),脫管態(tài))詳解的相關資料,這里對Java Hibernate對象進行了介紹及總結,需要的朋友可以參考下
    2016-11-11
  • Java實現(xiàn)的zip壓縮及解壓縮工具類示例

    Java實現(xiàn)的zip壓縮及解壓縮工具類示例

    這篇文章主要介紹了Java實現(xiàn)的zip壓縮及解壓縮工具類,結合實例形式分析了java對文件的進行zip壓縮及解壓縮的具體操作技巧,需要的朋友可以參考下
    2018-01-01
  • 解析Java中的static關鍵字

    解析Java中的static關鍵字

    static是方便在沒有創(chuàng)建對象的情況下進行調(diào)用(方法/變量)。顯然,被static關鍵字修飾的方法或者變量不需要依賴于對象來進行訪問,只要類被加載了,就可以通過類名去進行訪問。static可以用來修飾類的成員方法、類的成員變量,另外也可以編寫static代碼塊來優(yōu)化程序性能
    2021-06-06
  • Java線程池并發(fā)執(zhí)行多個任務方式

    Java線程池并發(fā)執(zhí)行多個任務方式

    這篇文章主要介紹了Java線程池并發(fā)執(zhí)行多個任務方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • JAVA字符串類型switch的底層原理詳析

    JAVA字符串類型switch的底層原理詳析

    這篇文章主要給大家介紹了關于JAVA字符串類型switch的底層原理的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JAVA具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • 一文徹底理清SpringBoot CURD處理邏輯、順序

    一文徹底理清SpringBoot CURD處理邏輯、順序

    這篇文章主要給大家介紹了關于如何一文徹底理清SpringBoot CURD處理邏輯、順序的相關資料,CURD是一個數(shù)據(jù)庫技術中的縮寫詞,一般的項目開發(fā)的各種參數(shù)的基本功能都是CURD,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • 從java中調(diào)用matlab詳細介紹

    從java中調(diào)用matlab詳細介紹

    這篇文章主要介紹了從java中調(diào)用matlab,有需要的朋友可以參考一下
    2013-12-12
  • Java從入門到精通之旅類和對象全面解析

    Java從入門到精通之旅類和對象全面解析

    Java是一門純面向?qū)ο蟮恼Z言(OOP),在面向?qū)ο蟮氖澜缋?一切皆為對象,面向?qū)ο笫墙鉀Q問題的一種思想,主要依靠對象之間的交互完成一件事情,這篇文章主要介紹了Java從入門到精通之旅類和對象全面解析,需要的朋友可以參考下
    2025-04-04

最新評論

手游| 肇东市| 九江市| 平遥县| 武鸣县| 牡丹江市| 宁安市| 嵊州市| 康定县| 大宁县| 永仁县| 云霄县| 西畴县| 沧源| 丹东市| 界首市| 来宾市| 米易县| 黄大仙区| 江西省| 靖江市| 木兰县| 台中县| 曲阳县| 牟定县| 海丰县| 定远县| 东丽区| 县级市| 政和县| 昌平区| 郁南县| 静海县| 安阳县| 抚远县| 宁明县| 观塘区| 建瓯市| 筠连县| 陇南市| 扎赉特旗|