亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java實現的新浪微博分享代碼實例

2019-11-26 15:15:37
字體:
來源:轉載
供稿:網友

weibo.java

復制代碼 代碼如下:

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 setContentView(R.layout.user_center);
                 // 創建微博實例
                mWeiboAuth = new WeiboAuth(this, Constants.APP_KEY,
                                 Constants.REDIRECT_URL, Constants.SCOPE);
                 // 創建微博分享接口實例
                mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, Constants.APP_KEY);
                 // 當 Activity 被重新初始化時(該 Activity 處于后臺時,可能會由于內存不足被殺掉了),
                // 需要調用 {@link IWeiboShareAPI#handleWeiboResponse} 來接收微博客戶端返回的數據。
                // 執行成功,返回 true,并調用 {@link IWeiboHandler.Response#onResponse};
                // 失敗返回 false,不調用上述回調
                if (savedInstanceState != null) {
                         mWeiboShareAPI.handleWeiboResponse(getIntent(), this);
                 }
        }
 /**
          * 檢查用戶是否安裝新浪微博
         */
         public void isNotInstall() {
                 try {
                         // 檢查微博客戶端環境是否正常,如果未安裝微博,彈出對話框詢問用戶下載微博客戶端
                        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();
                 }
         }
         /**
          * 微博認證授權回調類。 1. SSO 授權時,需要在 {@link #onActivityResult} 中調用
         * {@link SsoHandler#authorizeCallBack} 后, 該回調才會被執行。 2. 非 SSO
          * 授權時,當授權結束后,該回調就會被執行。 當授權成功后,請保存該 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有效,則直接調用發送微博
                if (mAccessToken.isSessionValid()) {
                         sendMessage();
                 } else {
                         mSsoHandler.authorize(new AuthListener());
                 }
         }
         /**
          * @See {@link Activity#onNewIntent}
          */
         @Override
         protected void onNewIntent(Intent intent) {
                 super.onNewIntent(intent);
                 // 從當前應用喚起微博并進行分享后,返回到當前應用時,需要在此處調用該函數
                // 來接收微博客戶端返回的數據;執行成功,返回 true,并調用
                // {@link IWeiboHandler.Response#onResponse};失敗返回 false,不調用上述回調
                mWeiboShareAPI.handleWeiboResponse(intent, this);
         }
         /**
          * 當 SSO 授權 Activity 退出時,該函數被調用。
         *
          * @see {@link Activity#onActivityResult}
          */
         @Override
         protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                 super.onActivityResult(requestCode, resultCode, data);
                 // SSO 授權回調
                // 重要:發起 SSO 登陸的 Activity 必須重寫 onActivityResult
                 if (mSsoHandler != null) {
                         mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
                 }
         }
         /**
          * 接收微客戶端博請求的數據。 當微博客戶端喚起當前應用并進行分享時,該方法被調用。
         *
          * @param baseRequest
          *            微博請求數據對象
         * @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();
                 }
         }
         /**
          * 第三方應用發送請求消息到微博,喚起微博分享界面。
          * @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();
                 }
         }
         /**
          * 第三方應用發送請求消息到微博,喚起微博分享界面。 注意:當
         * {@link IWeiboShareAPI#getWeiboAppSupportAPI()} >= 10351 時,支持同時分享多條消息,
         *
          * @param hasText
          *            分享的內容是否有文本
         * @param hasImage
          *            分享的內容是否有圖片
         * @param hasWebpage
          *            分享的內容是否有網頁
         */
         private void sendMultiMessage() {
                 // 1. 初始化微博的分享消息
                WeiboMultiMessage weiboMessage = new WeiboMultiMessage();
                 weiboMessage.textObject = getTextObj();
                 // 用戶可以分享其它媒體資源(網頁、音樂、視頻、聲音中的一種)
                weiboMessage.mediaObject = getWebpageObj();
                 // 2. 初始化從第三方到微博的消息請求
                SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest();
                 // 用transaction唯一標識一個請求
                request.transaction = String.valueOf(System.currentTimeMillis());
                 request.multiMessage = weiboMessage;
                 // 3. 發送請求消息到微博,喚起微博分享界面
                mWeiboShareAPI.sendRequest(request);
                 // 記錄分享日志
                PublicFun.sendShareAppLog(UserCenter.this,
                                 getResources().getString(R.string.micro_blog));
                 if (dialog != null) {
                         dialog.dismiss();
                 }
         }
         /**
          * 創建文本消息對象。
          * @return 文本消息對象。
         */
         private TextObject getTextObj() {
                 TextObject textObject = new TextObject();
                 textObject.text = getResources().getString(R.string.share_content);
                 return textObject;
         }
         /**
          * 創建多媒體(網頁)消息對象。
          * @return 多媒體(網頁)消息對象。
         */
         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;
         }
/**
 * 該類定義了微博授權時所需要的參數。
 * @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 應用程序上下文環境
     * @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 應用程序上下文環境
     *
      * @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 應用程序上下文環境
     */
     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();
     }
 }

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品免费| 欧美激情在线观看| 国产区精品在线观看| 国内精品久久久| 成人激情黄色网| 色综合久久88色综合天天看泰| 亚洲国产精品嫩草影院久久| 日韩专区在线播放| 日韩激情第一页| 亚洲一区二区三区视频播放| 7m精品福利视频导航| 国产视频精品在线| 欧美另类高清videos| www.99久久热国产日韩欧美.com| 91久久国产综合久久91精品网站| 7m第一福利500精品视频| 国产日韩欧美视频| 国产亚洲人成a一在线v站| 国产亚洲福利一区| 国产日韩换脸av一区在线观看| 国产成人久久久精品一区| 欧美日韩国产中文精品字幕自在自线| 国产精品第100页| 国产日韩欧美91| 91精品国产色综合久久不卡98| 成人国产精品一区| 亚洲欧美变态国产另类| 国产精品视频久久| 日韩欧美第一页| 国外视频精品毛片| 成人福利在线视频| 国产精品一区二区三区毛片淫片| 亚洲精品乱码久久久久久按摩观| 成人久久一区二区三区| 日韩欧美综合在线视频| 国产成人精品免费视频| 国产自摸综合网| 中文字幕一精品亚洲无线一区| 亚洲美女自拍视频| 久久视频这里只有精品| 国产欧美日韩精品在线观看| 2020欧美日韩在线视频| 全亚洲最色的网站在线观看| 欧美国产极速在线| 日韩国产欧美精品在线| 亚洲91精品在线观看| 成人久久一区二区三区| 久久视频国产精品免费视频在线| 久久久久久久久久久人体| 久久天天躁狠狠躁夜夜av| 日韩成人小视频| 欧美极品少妇xxxxⅹ裸体艺术| 中文字幕综合一区| 国产精品自拍偷拍| 91色中文字幕| 国产精品视频999| 亚洲福利视频在线| 日韩欧美在线播放| 亚洲人午夜色婷婷| 欧亚精品在线观看| 国产99久久久欧美黑人| 中文字幕精品视频| 日韩视频免费看| 日本欧美精品在线| 国产日韩在线一区| 国产精品无码专区在线观看| 国产97在线视频| 亚洲成人亚洲激情| 亚洲国产成人精品女人久久久| 国产精品久久久久久久久久| 午夜精品一区二区三区在线视频| 奇米四色中文综合久久| 欧美极品在线播放| 欧美午夜片欧美片在线观看| 欧美色道久久88综合亚洲精品| 91最新国产视频| 日韩动漫免费观看电视剧高清| 亚洲成人在线视频播放| 欧美性猛交xxxx| 国产精品日韩在线播放| 欧美激情在线播放| 色综合久久久888| 色爱精品视频一区| 亚洲第一页在线| 欧美日韩性视频在线| 91亚洲国产成人久久精品网站| 91大神在线播放精品| 亚洲色图第一页| www国产精品com| 久久天天躁夜夜躁狠狠躁2022| 久久视频在线直播| 2019中文在线观看| 在线视频欧美日韩| 国产91成人video| 亚洲一区二区三区xxx视频| 久久激情视频免费观看| 国产亚洲欧美日韩一区二区| 中文字幕国产亚洲2019| 在线观看免费高清视频97| 成人网在线观看| 国产成人+综合亚洲+天堂| 97在线视频免费看| 国产欧美精品一区二区三区-老狼| 中文字幕国产精品久久| 亚洲精品理论电影| 国产精品视频播放| 九色成人免费视频| 午夜精品福利视频| 69久久夜色精品国产7777| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品美女主播在线观看纯欲| 午夜精品一区二区三区在线视| 欧美激情在线有限公司| 九色精品免费永久在线| 欧美亚洲视频在线看网址| 日韩欧美成人免费视频| 欧美激情精品久久久久久久变态| 国内成人精品一区| 美日韩精品免费观看视频| 亚洲精品网址在线观看| 亚洲第一国产精品| 中文字幕日韩视频| 日本高清视频一区| 精品久久香蕉国产线看观看gif| 久久免费视频网站| 国产suv精品一区二区三区88区| 日韩免费观看高清| 欧美亚洲伦理www| 国产在线观看一区二区三区| 亚洲欧美成人一区二区在线电影| 久久大大胆人体| 久久久久在线观看| 91国内精品久久| 91色视频在线导航| 国产精品日韩在线一区| 国产精品视频yy9099| 国产亚洲a∨片在线观看| 欧美亚洲在线视频| 91精品国产综合久久香蕉最新版| 国产精品久久久久不卡| 亚洲国语精品自产拍在线观看| 色偷偷亚洲男人天堂| 欧美中文字幕视频在线观看| 欧美在线视频网站| 亚洲精品一区二区三区婷婷月| 国产成人在线一区二区| 国产成人精品999| 欧美人成在线视频| 亚洲人成五月天| 青草成人免费视频| 91精品国产沙发| 蜜臀久久99精品久久久无需会员| 日韩人体视频一二区| 精品色蜜蜜精品视频在线观看| 欧美日韩成人黄色| 亚洲色图50p| 4p变态网欧美系列| 亚洲乱码国产乱码精品精天堂| 亚洲国产小视频在线观看| 亚洲男人的天堂在线| 1769国产精品| 午夜精品一区二区三区视频免费看| 欧美一区二三区| 91成人免费观看网站|