1. 程式人生 > >Android微博,微信,QQ分享功能的實現

Android微博,微信,QQ分享功能的實現

最近專案要求實現微博,微信,QQ的分享功能,並且要求有分享回撥,提示使用者分享成功還是失敗.當用戶從三方應用點選分享的連線的時候,通過h5頁面可以下載安裝app或者直接進入app的對應頁面.

首先說以下我遇到的幾個問題吧

  • QQ無法進行回撥,但是確實已經分享成功了
  • 多處微博分享出現bug
  • 從三方分享頁跳轉到本地,出現崩潰現象;三方連線進入詳情頁還有回撥提示
  • 三方分享成功後,選擇留在三方,回到桌面,再進入專案,去提示分享失敗

QQ無法進行回撥,但是確實已經分享成功了

關於QQ分享的配置,官方文件或者部落格上都有,需要呼叫Tencent的方法public void shareToQQ(Activity var1, Bundle var2, IUiListener var3).第三個引數就是我們的回撥監聽.當我們再次回到詳情頁面的時候就會走onActivityResult()方法.我們通過判斷requestCode是否是QQ分享的請求碼就可以.如果是我們就呼叫這個方法Tencent.onActivityResultData(requestCode, resultCode, data, iUiListener);其他的事就不用我們關心了.但是結果呼叫方法進行判斷的時候總是和QQ的內部邏輯不一致,當時找了好久也沒有發現問題.浪費了好多時間,後來發現QQid不是最新的.因為同時進行的還有一個三方登入,QQ的id換了,結果配置檔案裡面的沒有改.注意,ID前要拼接tencent.之所以可以分享成功是因為分享時用的id是最新的,呼叫的是本地的常量,但是配置檔案裡面不是,所以回撥就會有問題.

多處微博分享出現bug

剛開始我彈出框使用的DialogFragment實現的,而微博回撥要求activity的啟動型別是singleTask,這樣再次進入的時候就會走onNewIntent方法,通過微博分享例項IWeiboShareAPI的handleWeiboResponse(Intent,Response).這個response要繼承IWeiboHandler.Response並實現這些回撥方法

@Override public void onResponse(BaseResponse baseResponse) {
        if (baseResponse != null
) { switch (baseResponse.errCode) { case WBConstants.ErrorCode.ERR_OK: //分享成功 break; case WBConstants.ErrorCode.ERR_CANCEL: //分享取消 break; case WBConstants.ErrorCode.ERR_FAIL: //分享失敗
break; } } }

開始我在所有的呼叫分享的類裡面都實現了這個方法,結果會先彈出4種選項的彈框,應該是因為我有四處寫回調的原因,因為這四個activityactivity的啟動方式是singleTask,都有微博的回撥,這樣就出問題了.所以,彈窗不能用dialogfragment實現,必須用activity實現.這樣,所有的回撥我們就可以再彈窗的activity上實現了,只用一處就搞定.

從三方分享頁跳轉到本地,出現崩潰現象;三方連線進入詳情頁還有回撥提示

一開始是進來直接崩潰,原因是在onNewIntent方法中呼叫了微博分享物件的方法,但是這個方法只有在點選微博之後才初始化,所以加了一個標記,記錄是否是點選了微博分享.

@Override protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        if (isWeiBo) {//判斷是否點選了微博
            //初始化微博
            HNAHelper.thirdPard().weibo().getWeiboShareObj().handleWeiboResponse(intent, this);
        }
    }

解決了這個問題就出現了下個問題.
這個問題的詳細描述就是我從QQ分享的頁面點選進入我的詳情頁時,再點選分享,這個頁面就會消失,又出現一個同樣的詳情頁,再點選分享按鈕時就沒有問題.這個問題也看了好久,斷點都跟蹤不到.最後根據現象分析了一下,消失的那個詳情頁時三方進入是建立的,後面出來的那個詳情頁時分享前的那個.為什麼會出現這種情況呢?原因是微博要求在配置檔案中設定啟動模式是singleTask.關於四種啟動方式,我之前的部落格有過總結,可以參考一下.回顧基礎知識–第一章:Activity的生命週期和啟動模式所以當我點選分享時,呼叫分享彈框就會把我從QQ進來是新壓入棧的HomeActivity和詳情頁全部彈出去,展示之前的.針對這個問題,我把HomeActivity的啟動模式也設定成了singleTask,這樣每次呼叫HomeActivity都相當於重新進入這個專案,不會再有之前的activity,也不會在出現三方進來時還有回撥的情況,彈吐司的情況.

三方分享成功後,選擇留在三方,回到桌面,再進入專案,卻提示分享失敗

這個問題是因為桌面過來的意圖,雖然requestCode是分享碼沒錯,但是resultCode卻變了,並且data變成了null,所以才會分享失敗的.我添加了對data是否為null的判斷,問題解決了.

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // 官方文件沒這句程式碼, 但是很很很重要, 不然不會回撥!
        if (requestCode == Constants.REQUEST_QQ_SHARE && data != null) {
            Tencent.onActivityResultData(requestCode, resultCode, data, iUiListener);
        }
    }

關鍵是一定要使用一個activity來做分享的dialog,否則就前功盡棄了.

相關推薦

Android,,QQ分享功能實現

最近專案要求實現微博,微信,QQ的分享功能,並且要求有分享回撥,提示使用者分享成功還是失敗.當用戶從三方應用點選分享的連線的時候,通過h5頁面可以下載安裝app或者直接進入app的對應頁面. 首先說以下我遇到的幾個問題吧 QQ無法進行回撥,但是確實已經

Android中使App快速 簡單地支援新浪 QQ facebook等十幾個主流社交平臺的分享功能

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android端IM應用中的@人功能實現:仿QQ,零入侵、高可擴充套件

本文由“貓爸iYao”原創分享,感謝作者。 1、引言 最近有個需求:評論@人(沒錯,就是IM聊天或者微博APP裡的@人功能),就像下圖這樣: ▲ 微信群聊介面裡的@人功能  ▲ QQ群聊介面裡的@人功能 網上已經有一些文章分享了類似功能實現邏輯,但是幾乎都是

關於QQ、新浪分享功能實現

1,QQ空間分享     http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey     ?url=  //分享url     &title  //分享內容     &summary //分享內容摘

Android 分享QQ分享功能(原生實現

微信分享與QQ分享功能現在都挺常見的,可以根據一些第三方社會化分功能快速實現,不過多多少少都不怎麼純淨,最好都是自己看官方文件來實現就最好了~一、微信分享微信分享功能需要先在微信開放平臺註冊應用並獲取APP ID,就可以獲得微信提供的基本介面了APP ID是對應唯一的應用包名

QQ分享功能

 var _width = 600, _height = 600,   _top = (screen.height-_height)/2,   _left = (screen.width-_width)/2;   /**** * qq空間分享 */function shar

sharesdk第三方分享功能朋友圈QQ郵箱)

//需要引入sharesdk和在微博微信QQ提供的第三方平臺上申請賬號,請自行查閱sharesdk官方文件 //用於分享的資料,自行根據需求進行設定 public class ShareModel { private String address; priv

android實現朋友圈和好友分享功能

今天的這篇文章是基於上一篇微信登入的基礎實現的。可以先看看我的微信登入的實現。 廢話不多說,先看執行效果 首介面,點選微信登入,彈出分享選單,樓主比較懶,圖片和按鈕文字都沒換,希望大家不要介意 點選微信好友 我們到微信看看是否收到 可以看到,沒毛病,

Android SDK分享功能中的最全過程步驟分析

在前面有一章已經分析過怎麼用官方的demo分享微信資訊了,在這裡我就不再多說,其中關於在自己應用分享說得很簡單,本文作者也是經過一番折騰才弄成功,為了以後讓大家都少走彎路,決定在這裡從頭到尾介紹怎麼在自己的應用中分享功能 !!注意:順序不能亂!! 1、建立自己的應用 Tes

使用ShareSDK完成第三方(QQ)登入和分享

這幾天遇到一個需求:做第三方登入和分享。遇到了一些坑,把整個過程整理記錄下來,方便他人,同時也捋一下思路。 當時考慮過把每個平臺的SDK下載下來,一個一個弄,一番取捨後決定還是用ShareSDK。這裡只做了微博、微信和QQ。過程如下: 1.去ShareSDK官網註冊一個賬號方便以後對ShareSDK的

Android 開啟外部應用(//QQ等)

跳轉微信首頁 Intent intent = new Intent(); ComponentName cmp = new ComponentName("com.tencent.mm","com.tencent.mm.ui.LauncherUI"); int

Android實現新浪SSO授權登入分享文字圖片等功能(WEIBO_ANDROID_SDK V2.3.0 )

新浪開發平臺:http://open.weibo.com 新浪微博分享目前分為兩種途徑: 1,直接在自己的APP,彈出類似Dialog(sina整合)來完成授權,授權成功後可直接分享內容,全程都是在自己APP裡完成分享。老版本的微博SDK中集成了彈出分享Dialog(

/企業分享功能

area 註意 OS sha 自己的 gpo markdown down 點擊 前言: 最近有在做一個企業微信的分享功能,整體而言是沒什麽太大的難度,但是onMenuShareAppMessage, shareAppMessage這些原生的api,只有你自己觸發了微信頁面右

jssdk分享功能開發

獲取地理位置 開放平臺 ont 1.3 千萬 sage hide ict gbk 先理解下分享:    在app端 ,經常能看見 分享按鈕的功能,(分享給朋友,分享到朋友圈,分享到QQ空間等等); https://open.weixin.qq.com/(微信開發平臺),這需

轉發(分享)功能

第一種方法:         通過給 button 元件設定屬性 open-type="share",可以在使用者點選按鈕後觸發         Page.onS

關閉分享功能

/*隱藏微信右上角選單*/ function hideWxMenu(){ document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { WeixinJSBridge.call('hideTool

jssdk分享功能分享內容自定義失敗原因

實現分享功能前提條件必須保證通過config介面注入許可權驗證配置成功,否則後面沒法繼續。 這個問題困擾了我一天,後來看論壇中才找到原因。 獲取“分享到朋友圈”按鈕點選狀態及自定義分享內容介面 wx

QRCode 掃描二維碼、掃描條形碼、相簿獲取圖片後識別、生成帶 Logo 二維碼、支援 QQ 二維碼掃描樣式

目錄功能介紹根據之前公司的產品需求,參考 barcodescanner 改的,希望能幫助到有生成二維碼、掃描二維碼、識別圖片二維碼等需求的猿友。修改幅度較大,也就沒準備針對 barcodescanner 庫提交PR。 ZXing 生成可自定義顏色、帶 logo 的二維碼 ZX

Android 仿的點贊上報功能,持續點贊再取消

             產品需求,實現類似微博的持續點贊再取消功能,因為自己也偶爾刷微博,對這功能有一定的使用上的瞭解,       至於微博點讚的具體實現我並不知道,微博點贊在斷網的情況下依然能點贊,不會提示網路異常,等有網路之後       重新重新整理,實際是沒有點讚

自帶分享功能實現

最近做的微信公眾號開發,有個頁面是需要分享推廣,微信自帶的也有轉發可是轉發出去的效果是網址,這個效果顯然不是我們需要的 然後建立方法呼叫jssdk類 function jssdk($info){