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

歡迎訪問 生活随笔!

生活随笔

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

Android

android qq分享自动弹出,史上最详细Android集成QQ,微信,微博分享(不要第三方)持续更新中...

發(fā)布時間:2025/3/13 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android qq分享自动弹出,史上最详细Android集成QQ,微信,微博分享(不要第三方)持续更新中... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

QQ1 下載sdk并運行demo

2 各種配置

IUiListener

4 分享圖片41 分享到QQ

41 分享到QZONE

Sina微博配置

選擇集成sdk方式

分享圖片

現(xiàn)在項目中用個第三方登錄,或分享已經不是什么稀奇事了,但是要想把這個功能做好,那可就不容易了。估計到這里就有人會說了,扯犢子,這玩意,我用第三方sdk,什么umeng,sharesdk分分鐘給你做出來,可是這些第三方sdk只有對項目的分享要求不高的時候才適合,如果要定制分享,那我就只能呵呵。雖然第三方登錄或分享沒什么技術難度,但是各種配置,而且每一個都不太一樣,少配置一個地方代碼就通不過了,所以基于上問題,特寫此文以備不時之需。

好,上面扯太多了,現(xiàn)在正式上代碼,我們先從QQ入手,你問為什么,因為他最簡單呀

1. QQ

1.1 下載sdk并運行demo

首先不得不吐槽一個問題,就是騰訊的文檔是最全的,全的你都找不到在哪里,點擊這里可以查看官方文檔這里下載官方demo下載

另外,由于官方文檔太難找了,特上此圖

首先下載sdk,我下載的版本是Android_SDK_V2.9.4,解壓后目錄如圖所示

其他jar目錄下面是需要添加你的項目依賴中去的jar包,sample就是顧名思義啦,可以直接將他導入eclipse,并更編碼為utf-8,不過當前版本的demo配置有點問題,導入完成后會有如下錯誤

不過別急,我們程序員最擅長解決這種問了,再說有什么問題能難倒我聰明的程序員呢

首先我們可以隨便打開一個文件,可以查看到時找不到這樣的包com.tencent.tauth.IRequestListener,這我們第一反應肯定是,沒有加入依賴包,臥槽,真聰明,恭喜你答對了,呵呵~

既然這樣那問題就簡單了,直接拷貝jar目錄下面jar包放到libs,并add path(如果需要),這下整個世界都清凈了,錯誤統(tǒng)統(tǒng)滾開了,現(xiàn)在就可以運行看看效果

1.2 各種配置

配置權限

配置activity

android:launchMode="singleTask"

android:noHistory="true" >

android:configChanges="orientation|keyboardHidden"

android:screenOrientation="behind"

android:theme="@android:style/Theme.Translucent.NoTitleBar" />

到這里我們的清單文件和activity都配置完了,接下來我要實例化Tencent類,所有的操作都是通過他來的,查看demo這個類的實例化是在MainActivity#onCreate方法中,并弄成了單例

public static Tencent mTencent;

if (mTencent == null) {

mTencent = Tencent.createInstance(mAppid, this);

}

IUiListener

現(xiàn)在我們需要在分享或登錄的過程中拿到一些狀態(tài),就需要用到IUiListener,調用SDK已經封裝好的接口時,例如:登錄、快速支付登錄、應用分享、應用邀請等接口,需傳入該回調的實例。

IUiListener qqShareListener = new IUiListener() {

@Override

public void onCancel() {

if (shareType != QQShare.SHARE_TO_QQ_TYPE_IMAGE) {

Util.toastMessage(QQShareActivity.this, "onCancel: ");

}

}

@Override

public void onComplete(Object response) {

// TODO Auto-generated method stub

Util.toastMessage(QQShareActivity.this, "onComplete: " + response.toString());

}

@Override

public void onError(UiError e) {

// TODO Auto-generated method stub

Util.toastMessage(QQShareActivity.this, "onError: " + e.errorMessage, "e");

}

};

//如果要收到QQ分享,或登錄的一些狀態(tài),必須加入代碼

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

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

}

1.4 分享圖片

我這只貼我們今天用到的代碼,其他的大家可以直接在demo里面復制,本文主要內容是,記錄一些配置,而并不是貼代碼

1.4.1 分享到QQ

public void shareOnlyImageOnQQ(View view) {

final Bundle params = new Bundle();

params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, Environment.getExternalStorageDirectory().getAbsolutePath().concat("/a.png"));

params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "測試應用");

params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_IMAGE);

// params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN); //打開這句話,可以實現(xiàn)分享純圖到QQ空間

doShareToQQ(params);

}

private void doShareToQQ(final Bundle params) {

// QQ分享要在主線程做

ThreadManager.getMainHandler().post(new Runnable() {

@Override

public void run() {

if (null != mTencent) {

mTencent.shareToQQ(QQActivity.this, params, qqShareListener);

}

}

});

}

1.4.1 分享到QZONE

截止到2016-4-8,QZONE暫不支持純圖片分享,官網文檔這里也有說。但是我們可以通過分享到QQ時設置一個參數(shù),就可以直接分享純圖到QQ空間了

public void shareOnlyImageOnQZone(View view) {

final Bundle params = new Bundle();

//本地地址一定要傳sdcard路徑,不要什么getCacheDir()或getFilesDir()

params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, Environment.getExternalStorageDirectory().getAbsolutePath().concat("/a.png"));

params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "測試應用");

params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_IMAGE);

params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN); //打開這句話,可以實現(xiàn)分享純圖到QQ空間

doShareToQQ(params);

}

注意:這里有個很重要的就是,分享本地圖片時路徑一定不要傳getCacheDir()或getFilesDir()等。不要問我為什么,因為你既然是分享圖片到QQ,他要幫我顯示,但你給他一個私有目錄,他肯定不能顯示,那種重點來了,這就到導致很多朋友在做分享時,分享的圖片不能顯示得原因了。別我是怎么知道的,我說我猜的,你信么~~

Sina(微博)

我們到官方文檔下載相應的官方demo并且多看看項目的ReadeMe,寫的很詳細讓你少走彎路。解壓后項目結構如圖所示:

如果是第一次集成,我們可以直接運行WeiboSDKDemo_v3.1.4.apk先查看效果,這樣也方便你對他的功能和效果有一個大概了解,當如也可以直接導入demo-src目錄下面的代碼,

通過這種方式運行工程時,請務必替換默認的 debug.keystore文件,否則無法正確的授權成功。另外,該debug.keysotre 是新浪官方的,除了編譯運行官方 DEMO 外,請不要直接使用它,出于安全的考慮,您應該為自己的應用提供一份 keysotre。

在C:\Users\XXXXX.android目錄下,把Android默認的debug.keystore替換成當前微博demo里面提供debug.keystore。

配置

在集成微博前,需要到新浪微博官網創(chuàng)建一個應用,在控制臺-基本信息菜單里面填上包名和簽名,簽名通過簽名工具獲取工具這里獲取

配置權限,如果已經添加了相應的權限,就不要重復添加了

配置返回微博的activity

在進行微博分享前,需要在AndroidManifest.xml中,在需要接收消息的Activity(喚起微博主程序的類)里聲明對應的Action:ACTION_SDK_REQ_ACTIVITY,如下所示:

android:configChanges="keyboardHidden|orientation"

android:windowSoftInputMode="adjustResize"

android:exported="false" >

android:exported="false">

選擇集成sdk方式

在集成微博SDK前,有兩種方式來集成微博SDK:

直接導入weibosdkcore.jar:適用于只需要授權、分享、網絡請求框架功能的項目

引用WeiboSDK工程(Library):適用于微博授權、分享,以及需要登陸按鈕、調用OpenAPI的項目

在這里我采用方式1,因為我不需要登錄按鈕和直接調用OpenAPI

分享圖片

WeiboMessage weiboMessage = new WeiboMessage();

ImageObject imageObject = new ImageObject();

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);

imageObject.setImageObject(bitmap);

weiboMessage.mediaObject = imageObject;

SendMessageToWeiboRequest request = new SendMessageToWeiboRequest();

request.transaction = String.valueOf(System.currentTimeMillis());

request.message = weiboMessage;

mWeiboShareAPI.sendRequest(SinaActivity.this, request);

如果配置沒問題的話,到這一步已經是可以分享得了,如果遇到什么問題,請在下方評論,我一定會回復的

以上測試的代碼我放到github了

另外說點題外話,鑒于我是有點強迫癥的人,所以在代碼以及文字的組織和代碼的格式化都保持良好的風格,特別是代碼的格式,我都是每次先自己寫一遍,然后在從開發(fā)工具里拷貝出來,有時還得按tad一點一點點縮進(如果哪位大神有更好的方法,希望指教下),才貼到這上面了,以為我覺得既然要寫博客就要寫好,這要才對別人有幫助,在我覺得如果文字排版或者代碼格式亂亂的,就是耍流氓。

如果我的文章對來帶來的幫助,可加我微信,微博,QQ什么,交個朋友,另外微信,微博都會不定期發(fā)一些優(yōu)質的文章,感謝大家的支持~~

總結

以上是生活随笔為你收集整理的android qq分享自动弹出,史上最详细Android集成QQ,微信,微博分享(不要第三方)持续更新中...的全部內容,希望文章能夠幫你解決所遇到的問題。

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