日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Android开发QQ登陆、分享、空间分享及回调处理 不回调问题的处理

發(fā)布時間:2024/3/24 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发QQ登陆、分享、空间分享及回调处理 不回调问题的处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先是看 ?qq互聯(lián)里面的文檔 ?按文檔操作:qqsdk移動應(yīng)用接入流程? 按照這個流程一步一步來就是了。基本上沒的錯誤的。但還是有些很坑的地方。這里列舉一些。


接下來

一、首先是qq登陸。


下載sdk集成到項目 ?并在androidmanifest.xml里面增加節(jié)點 ? :集成到項目?

1. 在AndroidManifest.xml里聲明QQ相關(guān)的Activity


<activityandroid: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="tencentxxxxxxxxxx" /></intent-filter></activity><activityandroid:name="com.tencent.connect.common.AssistActivity"android:screenOrientation="behind"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="orientation|keyboardHidden"></activity>
AssistActivity ? 文檔里面是沒有的 ? ,只要你不加 ?系統(tǒng)會報錯讓你添加該activity。騰訊文檔沒有更新 ?這是很坑的地方。

注意哈 ?XXXXXXX的地方,要換成你的APP_ID ? ?前面的tencent一定要哈。不能刪除。以下文檔凡事xxxxxxxx的地方都是app-id

2. 添加SDK到你的工程里

具體就是拷貝*.jar到lib目錄下,然后添加編譯。 這些基本上的朋友都會嘛 ?不用講述了嘛
注意,這里有個坑,如果是全量SDK包,是包含有支付SDK的,有一些應(yīng)用市場會限制個人開發(fā)者的產(chǎn)品里添加這種支付SDK,審核不過。?
修改方式也簡單,就是只添加基礎(chǔ)包,分享登錄什么的夠用了。下載下來的都有說明的。自己選擇就是了 在jar里面。


3. 創(chuàng)建實例:

Tencent是SDK的功能入口,所有的接口調(diào)用都得通過Tencent進(jìn)行調(diào)用。因此,調(diào)用SDK,首先需要創(chuàng)建一個Tencent實例,其代碼如下 private IWXAPI api;private Handler handler=new Handler();private Tencent tencent;private Button qqlanding;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_land);// Tencent類是SDK的主要實現(xiàn)類,開發(fā)者可通過Tencent類訪問騰訊開放的OpenAPI。// 其中APP_ID是分配給第三方應(yīng)用的appid,類型為String。tencent = Tencent.createInstance("xxxxxxx", this.getApplicationContext());// 1.4版本:此處需新增參數(shù),傳入應(yīng)用程序的全局context,可通過activity的getApplicationContext方法獲取// 初始化視圖init();}

登陸點擊事件調(diào)用此方法: public void Login(){tencent = Tencent.createInstance("xxxxxxx", this.getApplicationContext());if (!tencent.isSessionValid()){tencent.login(this, "all", new BaseUiListener());}}

4. 實現(xiàn)回調(diào)接口

public class BaseUiListener implements IUiListener {@Overridepublic void onComplete(Object object) {Toast.makeText(LandActivity.this,"登陸成功",Toast.LENGTH_SHORT).show();}@Overridepublic void onError(UiError uiError) {}@Overridepublic void onCancel() {}}

重載onActivityResult ?這個方法要在騰訊開放平臺有說這個問題、問題很亂?騰訊開放平臺??

注:在某些低端機(jī)上調(diào)用登錄后,由于內(nèi)存緊張導(dǎo)致APP被系統(tǒng)回收,登錄成功后無法成功回傳數(shù)據(jù)。
解決辦法如下
在調(diào)用login的Activity或者Fragment重寫onActivityResult方法,示例代碼如下:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == Constants.REQUEST_LOGIN) {if (resultCode == Constants.ACTIVITY_OK) {tencent.handleLoginData(data, new BaseUiListener());}super.onActivityResult(requestCode, resultCode, data);}}好 ?這樣 qq登陸的功能就完成了、。

接下來是
二、qq好友分享:
接上面第3條 創(chuàng)建實例 以后 ? 繼續(xù)

4. 實現(xiàn)分享回調(diào)接口 ?

class ShareUiListener implements IUiListener {@Overridepublic void onComplete(Object o) {Toast.makeText(AboutActivity.this,"分享成功",Toast.LENGTH_SHORT).show();}@Overridepublic void onError(UiError uiError) {// 分享異常}@Overridepublic void onCancel() {//分享取消}}

點擊事件調(diào)用此方法 ?:分享的代碼

private Bundle paramsa;private void shareToQQ() {paramsa = new Bundle();paramsa.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);paramsa.putString(QQShare.SHARE_TO_QQ_TITLE, "標(biāo)題");// 標(biāo)題paramsa.putString(QQShare.SHARE_TO_QQ_SUMMARY, "頭部按摩器");// 摘要paramsa.putString(QQShare.SHARE_TO_QQ_TARGET_URL, "http://mp.weixin.qq.com/s/ObyplzD9MQJ1OcXATN64hQ");// 內(nèi)容地址paramsa.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://www.cdqldz.com/img/ew1.png");// 網(wǎng)絡(luò)圖片地址  params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "應(yīng)用名稱");// 應(yīng)用名稱paramsa.putString(QQShare.SHARE_TO_QQ_EXT_INT, "其它附加功能");tencent.shareToQQ(AboutActivity.this, paramsa, new ShareUiListener());}
5 同樣的 ?要重寫onActivityResult protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);// 官方文檔沒這句代碼, 但是很很很重要, 不然不會回調(diào)!Tencent.onActivityResultData(requestCode, resultCode, data, new ShareUiListener());if (requestCode == Constants.REQUEST_API) {if (resultCode == Constants.REQUEST_QQ_SHARE ||resultCode == Constants.REQUEST_QZONE_SHARE ||resultCode == Constants.REQUEST_OLD_SHARE) {Tencent.handleResultData(data, new ShareUiListener());}}}到此 就完成了分享工作? 有幾個值得注意的問題:?
1. AndroidManifest.xml里的那個APP_ID前,一定要有tencent?
2. 重載onActivityResult

空間分享的代碼就上傳了 大同小異。 空間分享代碼: 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);// 圖片地址tencent.shareToQzone(AboutActivity.this, params,new ShareUiListener());}








總結(jié)

以上是生活随笔為你收集整理的Android开发QQ登陆、分享、空间分享及回调处理 不回调问题的处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。