日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

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

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


接下來

一、首先是qq登陸。


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

1. 在AndroidManifest.xml里聲明QQ相關的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 ? 文檔里面是沒有的 ? ,只要你不加 ?系統會報錯讓你添加該activity。騰訊文檔沒有更新 ?這是很坑的地方。

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

2. 添加SDK到你的工程里

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


3. 創建實例:

Tencent是SDK的功能入口,所有的接口調用都得通過Tencent進行調用。因此,調用SDK,首先需要創建一個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的主要實現類,開發者可通過Tencent類訪問騰訊開放的OpenAPI。// 其中APP_ID是分配給第三方應用的appid,類型為String。tencent = Tencent.createInstance("xxxxxxx", this.getApplicationContext());// 1.4版本:此處需新增參數,傳入應用程序的全局context,可通過activity的getApplicationContext方法獲取// 初始化視圖init();}

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

4. 實現回調接口

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 ?這個方法要在騰訊開放平臺有說這個問題、問題很亂?騰訊開放平臺??

注:在某些低端機上調用登錄后,由于內存緊張導致APP被系統回收,登錄成功后無法成功回傳數據。
解決辦法如下
在調用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條 創建實例 以后 ? 繼續

4. 實現分享回調接口 ?

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() {//分享取消}}

點擊事件調用此方法 ?:分享的代碼

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, "標題");// 標題paramsa.putString(QQShare.SHARE_TO_QQ_SUMMARY, "頭部按摩器");// 摘要paramsa.putString(QQShare.SHARE_TO_QQ_TARGET_URL, "http://mp.weixin.qq.com/s/ObyplzD9MQJ1OcXATN64hQ");// 內容地址paramsa.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://www.cdqldz.com/img/ew1.png");// 網絡圖片地址  params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "應用名稱");// 應用名稱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);// 官方文檔沒這句代碼, 但是很很很重要, 不然不會回調!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, "標題");// 標題params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要");// 摘要params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL,"http://www.qq.com/news/1.html");// 內容地址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());}








總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。