【Android】QQ分享、QQ空間分享

開(kāi)發(fā)者注冊(cè)、應(yīng)用創(chuàng)建

  • 登錄騰訊開(kāi)放平臺(tái)注冊(cè)開(kāi)發(fā)者賬號(hào)并登錄;
  • 登陸后,點(diǎn)擊右上角用戶(hù)頭像展開(kāi)菜單,選擇管理中心;
    管理中心.png
  • 進(jìn)入管理中心后,在安卓應(yīng)用界面點(diǎn)擊創(chuàng)建應(yīng)用按鈕,填寫(xiě)對(duì)應(yīng)的應(yīng)用信息提交審核后完成應(yīng)用的創(chuàng)建。

注:在新建應(yīng)用時(shí),記錄APP IDAPP KEY,在以后的開(kāi)發(fā)過(guò)程中會(huì)用到。同時(shí),在管理中心界面可以查看到對(duì)應(yīng)應(yīng)用的詳細(xì)信息。


2.開(kāi)發(fā)環(huán)境配置

  • SDK下載
      登錄資料庫(kù)進(jìn)行SDK的下載。
  • 資源引用
      新建工程包名必須與平臺(tái)創(chuàng)建應(yīng)用包名一致,將open_sdk_xxx.jar手動(dòng)導(dǎo)入到項(xiàng)目libs目錄下,添加jar包后,右鍵選擇Add As Library添加該jar包到項(xiàng)目的Library,如下圖所示:
    導(dǎo)入資源jar包.png

    添加到Library.png
  • AndroidManifest.xml配置
    • manifest標(biāo)簽內(nèi)添加如下權(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.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  • application標(biāo)簽內(nèi)添加如下內(nèi)容:
<!-- ############ QQ空間和QQ SSO授權(quán)的Activity注冊(cè) ############ -->
<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:screenOrientation="portrait"
  android:theme="@android:style/Theme.Translucent.NoTitleBar" />

注意:一定記得在<data android:scheme="tencent你的AppId" />添加上應(yīng)用的AppId(如:對(duì)應(yīng)應(yīng)用的AppId為123456,則應(yīng)填寫(xiě)tencent123456)。


3.內(nèi)容分享

3.1 新建Tencent實(shí)例

private Tencent mTencent;// 新建Tencent實(shí)例用于調(diào)用分享方法
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  mTencent = Tencent.createInstance("your APP ID",getApplicationContext()); 
}

注:在新建Tencent實(shí)例時(shí),一定要注意填寫(xiě)應(yīng)用的APPID,如:APPID為123456,使用Tencent.createInstance("123456",getApplicationContext()); 即可創(chuàng)建Tencent實(shí)例。

  • 分享回調(diào)接口的實(shí)現(xiàn)
    自定義分享回調(diào)接口:
class MyIUiListener implements IUiListener {
  @Override
  public void onComplete(Object o) {
    // 操作成功 
  } 
  @Override
  public void onError(UiError uiError) { 
    // 分享異常
  } 
  @Override
  public void onCancel() {
    // 取消分享
  }
}

重寫(xiě)Activity或者Fragment的onActivityResult方法,否則不能正常的監(jiān)聽(tīng)分享狀態(tài),具體代碼如下:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // TODO Auto-generated method stub
  super.onActivityResult(requestCode, resultCode, data);
  Tencent.onActivityResultData(requestCode, resultCode, data, mIUiListener);
  if (requestCode == Constants.REQUEST_API) {
    if (resultCode == Constants.REQUEST_QQ_SHARE || resultCode == Constants.REQUEST_QZONE_SHARE || resultCode == Constants.REQUEST_OLD_SHARE) {
      Tencent.handleResultData(data, mIUiListener);
    }
  }
}

3.2 分享消息到QQ

  • 默認(rèn)分享-圖文并存
private Bundle params;
private void shareToQQ() {
  params = new Bundle();
  params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
  params.putString(QQShare.SHARE_TO_QQ_TITLE, "標(biāo)題");// 標(biāo)題
  params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要");// 摘要
  params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,"http://www.qq.com/news/1.html");// 內(nèi)容地址
  params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,"http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif");// 網(wǎng)絡(luò)圖片地址  params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "應(yīng)用名稱(chēng)");// 應(yīng)用名稱(chēng)
  params.putString(QQShare.SHARE_TO_QQ_EXT_INT, "其它附加功能");
  // 分享操作要在主線程中完成
  ThreadManager.getMainHandler().post(new Runnable() {
    @Override
    public void run() {
      mTencent.shareToQQ(mActivity, params, mIUiListener);
    }
  });
}
  • 分享純圖片到QQ
    /**
     * 分享純圖片到QQ
     *
     * @param imgUrl 圖片url
     */
    private void shareImgToQQ(String imgUrl) {
        params = new Bundle();
        params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_IMAGE);// 設(shè)置分享類(lèi)型為純圖片分享
        params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, imgUrl);// 需要分享的本地圖片URL
        // 分享操作要在主線程中完成
        ThreadManager.getMainHandler().post(new Runnable() {

            @Override
            public void run() {
                mTencent.shareToQQ(mActivity, params, mIUiListener);
            }
        });
    }

注:默認(rèn)為圖片分享,需要進(jìn)行音樂(lè)、應(yīng)用、純圖片分享的,請(qǐng)參照SDK內(nèi)的說(shuō)明文檔進(jìn)行代碼的編寫(xiě),注:有些參數(shù)在文檔上顯示的比較坑(你懂得),一定要仔細(xì)辨認(rèn)!一定要仔細(xì)辨認(rèn)!一定要仔細(xì)辨認(rèn)!
具體詳情請(qǐng)參閱接口調(diào)用說(shuō)明1.11 分享消息到 QQ(無(wú)需 QQ 登錄)(2)分享純圖片

3.3 分享到QQ空間

  • 默認(rèn)分享-圖文并存
private Bundle params;
private void shareToQZone() {
  params = new Bundle(); 
  params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);
  params.putString(QzoneShare.SHARE_TO_QQ_TITLE, "標(biāo)題");// 標(biāo)題
  params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要");// 摘要
  params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL,"http://www.qq.com/news/1.html");// 內(nèi)容地址
  ArrayList<String> imgUrlList = new ArrayList<>();
  imgUrlList.add("http://f.hiphotos.baidu.com/image/h%3D200/sign=6f05c5f929738bd4db21b531918a876c/6a600c338744ebf8affdde1bdef9d72a6059a702.jpg");
  params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL,imgUrlList);// 圖片地址
  // 分享操作要在主線程中完成
  ThreadManager.getMainHandler().post(new Runnable() { 
    @Override
    public void run() {
      // TODO Auto-generated method stub
      mTencent.shareToQzone(mActivity, params,mIUiListener);
    }
  });
}
  • 上傳圖片到QQ空間
    /**
     * 發(fā)表到QQ空間
     *
     * @param imgUrlList 圖片地址集合--上傳的只能是本地圖片!
     */
    private void publishToQzone(ArrayList<String> imgUrlList) {
        // 分享類(lèi)型
        params = new Bundle();
        params.putInt(QzonePublish.PUBLISH_TO_QZONE_KEY_TYPE, QzonePublish.PUBLISH_TO_QZONE_TYPE_PUBLISHMOOD);
        params.putString(QzonePublish.PUBLISH_TO_QZONE_SUMMARY, "說(shuō)說(shuō)正文");
        params.putStringArrayList(QzonePublish.PUBLISH_TO_QZONE_IMAGE_URL,
                imgUrlList);// 圖片地址ArrayList
        // 分享操作要在主線程中完成
        ThreadManager.getMainHandler().post(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                mTencent.publishToQzone(mActivity, params, mIUiListener);
            }
        });
    }

注:除了默認(rèn)的分享圖文外,還支持發(fā)表說(shuō)說(shuō)、視頻或上傳照片這三種模式,同上,需要參閱SDK開(kāi)發(fā)指南文檔,同理,請(qǐng)注意規(guī)避文檔上的坑。
上傳圖片到QQ空間時(shí),圖片只能是本地照片!
具體詳情請(qǐng)參閱接口調(diào)用說(shuō)明1.12 分享到 QQ 空間(無(wú)需 QQ 登錄)(2)發(fā)表說(shuō)說(shuō)、視頻或上傳圖片,看參數(shù)意義就行了,文檔代碼。。。就是坑。。


4.注意事項(xiàng)

  • APP ID

一定要替換成自己申請(qǐng)的appid——運(yùn)行前檢查AndroidManifest.xml中與ActivityTencent.createInstance內(nèi)使用的appid是否正常。
注意在AndroidMaifest.xml中,需要填寫(xiě)tencent您的appid,appid前多了個(gè)tencent!

  • 應(yīng)用權(quán)限的添加
  • Q空間和QQ SSO授權(quán)的Activity注冊(cè)

友情提示

在參閱分享sdk內(nèi)接口調(diào)用說(shuō)明書(shū)時(shí):
一!定!要!仔!細(xì)!看!參!數(shù)!說(shuō)!明!
千!萬(wàn)!不!要!拷!貝!官!方!代!碼!使!用!

最新更新時(shí)間 2017/08/01

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,675評(píng)論 25 709
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,500評(píng)論 19 139
  • 現(xiàn)在項(xiàng)目中用個(gè)第三方登錄,或分享已經(jīng)不是什么稀奇事了,但是要想把這個(gè)功能做好,那可就不容易了。估計(jì)到這里就有人會(huì)說(shuō)...
    SmileUsers閱讀 5,463評(píng)論 4 62
  • 最近由于公司想弄一個(gè)新手推薦活動(dòng),因?yàn)槭峭扑]活動(dòng),必須借用現(xiàn)在流行的社交軟件進(jìn)行各種分享,只要形式有微信分享到好友...
    toskyline閱讀 2,201評(píng)論 0 2
  • 昨夜約三兩好友小酌一番,夜半酒力散去,起身獨(dú)坐于桌前,望滿(mǎn)桌杯盤(pán)狼藉,獨(dú)留我一人對(duì)明月,遂感戚戚然。昨夜凌晨?jī)牲c(diǎn)左...
    月光夕顏閱讀 325評(píng)論 0 0

友情鏈接更多精彩內(nèi)容