android qq分享自动弹出,史上最详细Android集成QQ,微信,微博分享(不要第三方)持续更新中...
QQ1 下載sdk并運行demo
2 各種配置
IUiListener
4 分享圖片41 分享到QQ
41 分享到QZONE
Sina微博配置
選擇集成sdk方式
分享圖片
現在項目中用個第三方登錄,或分享已經不是什么稀奇事了,但是要想把這個功能做好,那可就不容易了。估計到這里就有人會說了,扯犢子,這玩意,我用第三方sdk,什么umeng,sharesdk分分鐘給你做出來,可是這些第三方sdk只有對項目的分享要求不高的時候才適合,如果要定制分享,那我就只能呵呵。雖然第三方登錄或分享沒什么技術難度,但是各種配置,而且每一個都不太一樣,少配置一個地方代碼就通不過了,所以基于上問題,特寫此文以備不時之需。
好,上面扯太多了,現在正式上代碼,我們先從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(如果需要),這下整個世界都清凈了,錯誤統統滾開了,現在就可以運行看看效果
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
現在我們需要在分享或登錄的過程中拿到一些狀態,就需要用到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分享,或登錄的一些狀態,必須加入代碼
@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); //打開這句話,可以實現分享純圖到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時設置一個參數,就可以直接分享純圖到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); //打開這句話,可以實現分享純圖到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。
配置
在集成微博前,需要到新浪微博官網創建一個應用,在控制臺-基本信息菜單里面填上包名和簽名,簽名通過簽名工具獲取工具這里獲取
配置權限,如果已經添加了相應的權限,就不要重復添加了
配置返回微博的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了
另外說點題外話,鑒于我是有點強迫癥的人,所以在代碼以及文字的組織和代碼的格式化都保持良好的風格,特別是代碼的格式,我都是每次先自己寫一遍,然后在從開發工具里拷貝出來,有時還得按tad一點一點點縮進(如果哪位大神有更好的方法,希望指教下),才貼到這上面了,以為我覺得既然要寫博客就要寫好,這要才對別人有幫助,在我覺得如果文字排版或者代碼格式亂亂的,就是耍流氓。
如果我的文章對來帶來的幫助,可加我微信,微博,QQ什么,交個朋友,另外微信,微博都會不定期發一些優質的文章,感謝大家的支持~~
總結
以上是生活随笔為你收集整理的android qq分享自动弹出,史上最详细Android集成QQ,微信,微博分享(不要第三方)持续更新中...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言 char memcpy,在C中使
- 下一篇: android更改menu字体颜色,An