Android,微信腾它,微博,QQ三方分享

QQ分享

SDK下載地址

引入sdk里的jar包

清單文件配置

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 
<application>
 <activity
       android:name="com.tencent.tauth.AuthActivity"
       android:noHistory="true"
       android:launchMode="singleTask" >
    <intent-filter>
           <action android:name="android.intent.action.VIEW" />
           <category android:name="android.intent.category.DEFAULT" />
           <category android:name="android.intent.category.BROWSABLE" />
           <data android:scheme="tencent你的AppId" />
    </intent-filter>
 </activity>

 <activity
        android:name="com.tencent.connect.common.AssistActivity"
        android:configChanges="orientation|keyboardHidden"
        android:screenOrientation="behind"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<application> 

要接收分享的回調(diào)死讹,需要實現(xiàn)IUiListener瞒滴,里面有三個回調(diào)方法。并在調(diào)用分享的Activity的onActivityResult方法中赞警,增加如下代碼

Tencent.onActivityResultData(requestCode,resultCode,data,listener);

微博分享

申請key

App Key:1647950651

App Secret:
2167d823481f16b3454259fe37ce7aa4

接入

接入文檔

github地址

詳細文檔

  1. 項目層級的build下添加maven { url "https://dl.bintray.com/thelasterstar/maven/" }
    allprojects {
    repositories {
        jcenter()
        mavenCentral()
        maven { url "https://dl.bintray.com/thelasterstar/maven/" }
     }
    }
  1. app層級下的build添加 compile 'com.sina.weibo.sdk:core:4.3.5:openDefaultRelease@aar'或者直接復(fù)制aar文件引入

  2. 關(guān)于so文件妓忍,微博sdk aar中默認直提供了[armeabi] [armeabi-v7a] [x86]三個平臺的so,如果你需要適配更多版本的so愧旦,請到github->so目錄中獲取全部平臺的so文件

  3. 關(guān)于混淆 -keep class com.sina.weibo.sdk.** { *; }

  4. 關(guān)于回調(diào):
    4.3.0開始用下面方法接收世剖,之前是重寫onNewIntent,需要注意

     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
         shareHandler.doResultIntent(data,this);
     } 
    

微信分享

微信開發(fā)平臺

  1. 聲明依賴

     dependencies {
     compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
     }
    

或者

    dependencies {
        compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
    }

第一個的without版本不包含統(tǒng)計功能

  1. 加權(quán)限

    <uses-permission android:name="android.permission.INTERNET"/>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  2. 在程序入口向微信客戶端注冊你的APP_ID

      iwxapi = WXAPIFactory.createWXAPI(this,WeChatConstants.APP_ID,true);
      iwxapi.registerApp(WeChatConstants.APP_ID);
    
  3. 接收微信的請求及返回值

    需要在包名目錄下新建一個wxapi目錄,新增一個WXEntryActivity類笤虫,繼承自Activity旁瘫,注意包名目錄在AS環(huán)境下應(yīng)該是applicationId

    實現(xiàn)IWXAPIEventHandler接口,微信發(fā)送的請求將回調(diào)到onReq方法耕皮,發(fā)送到微信請求的響應(yīng)結(jié)果將回調(diào)到onResp方法境蜕,實例代碼

    public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
        IWXAPI api;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            api = WXAPIFactory.createWXAPI(this, WeChatConstants.APP_ID);
            api.handleIntent(getIntent(), this);
        }
    
        @Override
        public void onReq(BaseReq baseReq) {
    
        }
    
        @Override
        public void onResp(BaseResp resp) {
            String result = "";
    
            switch (resp.errCode) {
                case BaseResp.ErrCode.ERR_OK:
                    result = "微信發(fā)送成功";
                    break;
                case BaseResp.ErrCode.ERR_USER_CANCEL:
                    result = "微信發(fā)送取消";
                    break;
                case BaseResp.ErrCode.ERR_AUTH_DENIED:
                    result = "微信發(fā)送被拒絕";
                    break;
                case BaseResp.ErrCode.ERR_UNSUPPORT:
                    result = "微信不支持錯誤";
                    break;
                default:
                    result = "微信發(fā)送返回";
                    break;
            }
            Toast.makeText(this, result, Toast.LENGTH_LONG).show();
            finish();
        }
    
        @Override
        protected void onNewIntent(Intent intent) {
            super.onNewIntent(intent);
            if (api == null) {
                api = WXAPIFactory.createWXAPI(this, WeChatConstants.APP_ID);
            }
            api.handleIntent(intent, this);
        }
    }

在AndroidManifest里注冊

   <activity
            android:name="${applicationId}.wxapi.WXEntryActivity"
            android:label="@string/app_name"
            android:exported="true"
             />
  1. 混淆
    -keep class com.tencent.mm.opensdk.** {
    *;
    }
    -keep class com.tencent.wxop.** {
    *;
    }
    -keep class com.tencent.mm.sdk.** {
    *;
    }

關(guān)于回調(diào)

由于微博跟QQ都是在onActivityResult里接收回調(diào)的,所以要判斷是哪個分享的返回凌停,微信的返回寫在WXEntryActivity里

     if (data!=null && data.getComponent() !=null){
            if (data.getComponent().getClassName().equals("com.sina.weibo.sdk.share.WbShareTransActivity")){
                ShareUtils.INSTANCE.getAction().wbShareHandler.doResultIntent(data,ShareUtils.INSTANCE.getAction());
            } else if (data.getComponent().getClassName().equals("com.tencent.connect.common.AssistActivity")){
                Tencent.onActivityResultData(requestCode,resultCode,data,ShareUtils.INSTANCE.getAction());
            }
        }

微信的回調(diào)在WXEntryActivity下的onResp方法中,值得注意的是售滤,無論是分享成功還是取消分享罚拟,返回的結(jié)果碼都是BaseResp.ErrCode.ERR_OK台诗,另外分享成功時,如果選擇停留在微信赐俗,將收不到返回結(jié)果拉队。

項目地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市阻逮,隨后出現(xiàn)的幾起案子粱快,更是在濱河造成了極大的恐慌,老刑警劉巖叔扼,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件事哭,死亡現(xiàn)場離奇詭異,居然都是意外死亡瓜富,警方通過查閱死者的電腦和手機鳍咱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來与柑,“玉大人谤辜,你說我怎么就攤上這事〖叟酰” “怎么了丑念?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長结蟋。 經(jīng)常有香客問我脯倚,道長,這世上最難降的妖魔是什么椎眯? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任挠将,我火速辦了婚禮,結(jié)果婚禮上编整,老公的妹妹穿的比我還像新娘舔稀。我一直安慰自己,他們只是感情好掌测,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布内贮。 她就那樣靜靜地躺著,像睡著了一般汞斧。 火紅的嫁衣襯著肌膚如雪夜郁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天粘勒,我揣著相機與錄音竞端,去河邊找鬼。 笑死庙睡,一個胖子當著我的面吹牛事富,可吹牛的內(nèi)容都是我干的技俐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼统台,長吁一口氣:“原來是場噩夢啊……” “哼雕擂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起贱勃,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤井赌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贵扰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仇穗,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年拔鹰,在試婚紗的時候發(fā)現(xiàn)自己被綠了仪缸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡列肢,死狀恐怖恰画,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓷马,我是刑警寧澤拴还,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站欧聘,受9級特大地震影響片林,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怀骤,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一费封、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蒋伦,春花似錦弓摘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至研叫,卻和暖如春锤窑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嚷炉。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工渊啰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人申屹。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓虽抄,卻偏偏與公主長得像走搁,于是被迫代替她去往敵國和親独柑。 傳聞我的和親對象是個殘疾皇子迈窟,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料忌栅? 從這篇文章中你...
    hw1212閱讀 12,728評論 2 59
  • 最近由于公司想弄一個新手推薦活動车酣,因為是推薦活動,必須借用現(xiàn)在流行的社交軟件進行各種分享索绪,只要形式有微信分享到好友...
    toskyline閱讀 2,137評論 0 2
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,156評論 25 707
  • 產(chǎn)品概述 Android U-share 6.0sdk是在5.0+的基礎(chǔ)上做了進一步的優(yōu)化瑞驱,降低了包的大小娘摔,對于三...
    AiPuff閱讀 7,100評論 1 10
  • 沒有房子想要買房彤侍,買了房子又后悔房子買小了肠缨,因為經(jīng)常不知道家里從哪里冒出來那么多的東西。收納這件事是一輩子的事業(yè)盏阶,...
    美房計閱讀 1,216評論 0 8