亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2024 | 回復(fù): 2
打印 上一主題 下一主題

[Android] 新浪微博分享實例代碼 [復(fù)制鏈接]

論壇徽章:
1
操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-07-07 22:20:00
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-07-06 14:29 |只看該作者 |倒序瀏覽
weibo.java
  1. @Override
  2.         protected void onCreate(Bundle savedInstanceState) {
  3.                  super.onCreate(savedInstanceState);
  4.                  setContentView(R.layout.user_center);
  5.                  // 創(chuàng)建微博實例
  6.                 mWeiboAuth = new WeiboAuth(this, Constants.APP_KEY,
  7.                                  Constants.REDIRECT_URL, Constants.SCOPE);
  8.                  // 創(chuàng)建微博分享接口實例
  9.                 mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, Constants.APP_KEY);

  10.                  // 當(dāng) Activity 被重新初始化時(該 Activity 處于后臺時,可能會由于內(nèi)存不足被殺掉了),
  11.                 // 需要調(diào)用 {@link IWeiboShareAPI#handleWeiboResponse} 來接收微博客戶端返回的數(shù)據(jù)。
  12.                 // 執(zhí)行成功,返回 true,并調(diào)用 {@link IWeiboHandler.Response#onResponse};
  13.                 // 失敗返回 false,不調(diào)用上述回調(diào)
  14.                 if (savedInstanceState != null) {
  15.                          mWeiboShareAPI.handleWeiboResponse(getIntent(), this);
  16.                  }
  17.         }

  18. /**
  19.           * 檢查用戶是否安裝新浪微博
  20.          */
  21.          public void isNotInstall() {
  22.                  try {
  23.                          // 檢查微博客戶端環(huán)境是否正常,如果未安裝微博,彈出對話框詢問用戶下載微博客戶端
  24.                         if (mWeiboShareAPI.checkEnvironment(true)) {

  25.                                  // 注冊第三方應(yīng)用 到微博客戶端中,注冊成功后該應(yīng)用將顯示在微博的應(yīng)用列表中。
  26.                                 // 但該附件欄集成分享權(quán)限需要合作申請,詳情請查看 Demo 提示
  27.                                 mWeiboShareAPI.registerApp();
  28.                                 startSinaShare();
  29.                          }
  30.                  } catch (WeiboShareException e) {
  31.                          e.printStackTrace();
  32.                          Toast.makeText(UserCenter.this, e.getMessage(), Toast.LENGTH_LONG)
  33.                                          .show();
  34.                  }
  35.                  if (dialog != null) {
  36.                          dialog.dismiss();
  37.                  }
  38.          }

  39.          /**
  40.           * 微博認(rèn)證授權(quán)回調(diào)類。 1. SSO 授權(quán)時,需要在 {@link #onActivityResult} 中調(diào)用
  41.          * {@link SsoHandler#authorizeCallBack} 后, 該回調(diào)才會被執(zhí)行。 2. 非 SSO
  42.           * 授權(quán)時,當(dāng)授權(quán)結(jié)束后,該回調(diào)就會被執(zhí)行。 當(dāng)授權(quán)成功后,請保存該 access_token、expires_in、uid 等信息到
  43.          * SharedPreferences 中。
  44.          */
  45.          class AuthListener implements WeiboAuthListener {

  46.                  @Override
  47.                  public void onComplete(Bundle values) {
  48.                          // 從 Bundle 中解析 Token
  49.                          mAccessToken = Oauth2AccessToken.parseAccessToken(values);
  50.                          if (mAccessToken.isSessionValid()) {
  51.                                  // 保存 Token 到 SharedPreferences
  52.                                  AccessTokenKeeper.writeAccessToken(UserCenter.this,
  53.                                                  mAccessToken);
  54.                                  sendMessage();
  55.                          }
  56.                  }

  57.                  @Override
  58.                  public void onCancel() {
  59.                  }

  60.                  @Override
  61.                  public void onWeiboException(WeiboException e) {
  62.                          Toast.makeText(UserCenter.this,
  63.                                          "Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
  64.                                          .show();
  65.                  }
  66.          }

  67.          /**
  68.           * 新浪微博用戶授權(quán)
  69.          */
  70.          public void startSinaShare() {
  71.                  mSsoHandler = new SsoHandler(UserCenter.this, mWeiboAuth);

  72.                  // 從 SharedPreferences 中讀取上次已保存好 AccessToken 等信息,
  73.                 mAccessToken = AccessTokenKeeper.readAccessToken(this);

  74.                  // 如果Token有效,則直接調(diào)用發(fā)送微博
  75.                 if (mAccessToken.isSessionValid()) {
  76.                          sendMessage();
  77.                  } else {
  78.                          mSsoHandler.authorize(new AuthListener());
  79.                  }
  80.          }

  81.          /**
  82.           * @See {@link Activity#onNewIntent}
  83.           */
  84.          @Override
  85.          protected void onNewIntent(Intent intent) {
  86.                  super.onNewIntent(intent);

  87.                  // 從當(dāng)前應(yīng)用喚起微博并進(jìn)行分享后,返回到當(dāng)前應(yīng)用時,需要在此處調(diào)用該函數(shù)
  88.                 // 來接收微博客戶端返回的數(shù)據(jù);執(zhí)行成功,返回 true,并調(diào)用
  89.                 // {@link IWeiboHandler.Response#onResponse};失敗返回 false,不調(diào)用上述回調(diào)
  90.                 mWeiboShareAPI.handleWeiboResponse(intent, this);
  91.          }

  92.          /**
  93.           * 當(dāng) SSO 授權(quán) Activity 退出時,該函數(shù)被調(diào)用。
  94.          *
  95.           * @see {@link Activity#onActivityResult}
  96.           */
  97.          @Override
  98.          protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  99.                  super.onActivityResult(requestCode, resultCode, data);
  100.                  // SSO 授權(quán)回調(diào)
  101.                 // 重要:發(fā)起 SSO 登陸的 Activity 必須重寫 onActivityResult
  102.                  if (mSsoHandler != null) {
  103.                          mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
  104.                  }
  105.          }

  106.          /**
  107.           * 接收微客戶端博請求的數(shù)據(jù)。 當(dāng)微博客戶端喚起當(dāng)前應(yīng)用并進(jìn)行分享時,該方法被調(diào)用。
  108.          *
  109.           * @param baseRequest
  110.           *            微博請求數(shù)據(jù)對象
  111.          * @see {@link IWeiboShareAPI#handleWeiboRequest}
  112.           */
  113.          @Override
  114.          public void onResponse(BaseResponse baseResp) {
  115.                  switch (baseResp.errCode) {
  116.                  case WBConstants.ErrorCode.ERR_OK:
  117.                          if (PublicFun.shareCondition()) {
  118.                                  gainBoBi();
  119.                          } else {
  120.                                  Toast.makeText(this, R.string.share_success, Toast.LENGTH_LONG)
  121.                                                  .show();
  122.                          }
  123.                          break;
  124.                  case WBConstants.ErrorCode.ERR_CANCEL:
  125.                          break;
  126.                  case WBConstants.ErrorCode.ERR_FAIL:
  127.                          Toast.makeText(this, R.string.errcode_deny, Toast.LENGTH_LONG)
  128.                                          .show();
  129.                          break;
  130.                  }
  131.                  if (dialog != null) {
  132.                          dialog.dismiss();
  133.                  }
  134.          }

  135.          /**
  136.           * 第三方應(yīng)用發(fā)送請求消息到微博,喚起微博分享界面。
  137.           * @see {@link #sendMultiMessage} 或者 {@link #sendSingleMessage}
  138.           */
  139.          private void sendMessage() {
  140.                  if (mWeiboShareAPI.isWeiboAppSupportAPI()) {
  141.                          sendMultiMessage();
  142.                  } else {
  143.                          Toast.makeText(this, R.string.sina_share_hint, Toast.LENGTH_SHORT)
  144.                                          .show();
  145.                  }
  146.          }

  147.          /**
  148.           * 第三方應(yīng)用發(fā)送請求消息到微博,喚起微博分享界面。 注意:當(dāng)
  149.          * {@link IWeiboShareAPI#getWeiboAppSupportAPI()} >= 10351 時,支持同時分享多條消息,
  150.          *
  151.           * @param hasText
  152.           *            分享的內(nèi)容是否有文本
  153.          * @param hasImage
  154.           *            分享的內(nèi)容是否有圖片
  155.          * @param hasWebpage
  156.           *            分享的內(nèi)容是否有網(wǎng)頁
  157.          */
  158.          private void sendMultiMessage() {
  159.                  // 1. 初始化微博的分享消息
  160.                 WeiboMultiMessage weiboMessage = new WeiboMultiMessage();
  161.                  weiboMessage.textObject = getTextObj();
  162.                  // 用戶可以分享其它媒體資源(網(wǎng)頁、音樂、視頻、聲音中的一種)
  163.                 weiboMessage.mediaObject = getWebpageObj();
  164.                  // 2. 初始化從第三方到微博的消息請求
  165.                 SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest();
  166.                  // 用transaction唯一標(biāo)識一個請求
  167.                 request.transaction = String.valueOf(System.currentTimeMillis());
  168.                  request.multiMessage = weiboMessage;

  169.                  // 3. 發(fā)送請求消息到微博,喚起微博分享界面
  170.                 mWeiboShareAPI.sendRequest(request);

  171.                  // 記錄分享日志
  172.                 PublicFun.sendShareAppLog(UserCenter.this,
  173.                                  getResources().getString(R.string.micro_blog));
  174.                  if (dialog != null) {
  175.                          dialog.dismiss();
  176.                  }
  177.          }

  178.          /**
  179.           * 創(chuàng)建文本消息對象。
  180.           * @return 文本消息對象。
  181.          */
  182.          private TextObject getTextObj() {
  183.                  TextObject textObject = new TextObject();
  184.                  textObject.text = getResources().getString(R.string.share_content);
  185.                  return textObject;
  186.          }

  187.          /**
  188.           * 創(chuàng)建多媒體(網(wǎng)頁)消息對象。
  189.           * @return 多媒體(網(wǎng)頁)消息對象。
  190.          */
  191.          private WebpageObject getWebpageObj() {
  192.                  WebpageObject mediaObject = new WebpageObject();
  193.                  mediaObject.actionUrl = getString(R.string.share_url);
  194.                  mediaObject.identify = Utility.generateGUID();
  195.                  mediaObject.title = getResources().getString(R.string.share_title);
  196.                  mediaObject.description = getString(R.string.share_content);
  197.                  Bitmap bmp = BitmapFactory.decodeResource(getResources(),
  198.                                  R.drawable.icon);
  199.                  mediaObject.setThumbImage(bmp);
  200.                  return mediaObject;
  201.          }


  202. /**
  203. * 該類定義了微博授權(quán)時所需要的參數(shù)。
  204. * @author SINA
  205. * @SINCE 2013-10-07
  206. */
  207. public class AccessTokenKeeper {
  208.      private static final String PREFERENCES_NAME = "com_weibo_sdk_android";

  209.      private static final String KEY_UID           = "uid";
  210.      private static final String KEY_ACCESS_TOKEN  = "access_token";
  211.      private static final String KEY_EXPIRES_IN    = "expires_in";

  212.      /**
  213.       * 保存 Token 對象到 SharedPreferences。
  214.      *
  215.       * @param context 應(yīng)用程序上下文環(huán)境
  216.      * @param token   Token 對象
  217.      */
  218.      public static void writeAccessToken(Context context, Oauth2AccessToken token) {
  219.          if (null == context || null == token) {
  220.              return;
  221.          }
  222.          SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
  223.          Editor editor = pref.edit();
  224.          editor.putString(KEY_UID, token.getUid());
  225.          editor.putString(KEY_ACCESS_TOKEN, token.getToken());
  226.          editor.putLong(KEY_EXPIRES_IN, token.getExpiresTime());
  227.          editor.commit();

  228.      }

  229.      /**
  230.       * 從 SharedPreferences 讀取 Token 信息。
  231.      *
  232.       * @param context 應(yīng)用程序上下文環(huán)境
  233.      *
  234.       * @return 返回 Token 對象
  235.      */
  236.      public static Oauth2AccessToken readAccessToken(Context context) {
  237.          if (null == context) {
  238.              return null;
  239.          }

  240.          Oauth2AccessToken token = new Oauth2AccessToken();
  241.          SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
  242.          token.setUid(pref.getString(KEY_UID, ""));
  243.          token.setToken(pref.getString(KEY_ACCESS_TOKEN, ""));
  244.          token.setExpiresTime(pref.getLong(KEY_EXPIRES_IN, 0));

  245.          return token;
  246.      }

  247.      /**
  248.       * 清空 SharedPreferences 中 Token信息。
  249.      *
  250.       * @param context 應(yīng)用程序上下文環(huán)境
  251.      */
  252.      public static void clear(Context context) {
  253.          if (null == context) {
  254.              return;
  255.          }
  256.          SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
  257.          Editor editor = pref.edit();
  258.          editor.clear();
  259.          editor.commit();
  260.      }
  261. }
復(fù)制代碼

論壇徽章:
59
2015七夕節(jié)徽章
日期:2015-08-24 11:17:25ChinaUnix專家徽章
日期:2015-07-20 09:19:30每周論壇發(fā)貼之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38榮譽版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年紀(jì)念徽章
日期:2015-07-20 11:05:27IT運維版塊每日發(fā)帖之星
日期:2015-07-20 11:05:34操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:36程序設(shè)計版塊每日發(fā)帖之星
日期:2015-07-20 11:05:40數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:432015年辭舊歲徽章
日期:2015-07-20 11:05:44
2 [報告]
發(fā)表于 2015-07-11 20:56 |只看該作者
謝謝分享。

論壇徽章:
80
20周年集字徽章-慶
日期:2020-10-28 14:09:1215-16賽季CBA聯(lián)賽之北京
日期:2020-10-28 13:32:5315-16賽季CBA聯(lián)賽之北控
日期:2020-10-28 13:32:4815-16賽季CBA聯(lián)賽之天津
日期:2020-10-28 13:13:35黑曼巴
日期:2020-10-28 12:29:1520周年集字徽章-周	
日期:2020-10-31 15:10:0720周年集字徽章-20	
日期:2020-10-31 15:10:07ChinaUnix元老
日期:2015-09-29 11:56:3020周年集字徽章-年
日期:2020-10-28 14:14:56
3 [報告]
發(fā)表于 2015-07-15 09:59 |只看該作者
我們的項目一直使用的是umeng的社會化組件 感覺還是很方便的。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP