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

歡迎訪問 生活随笔!

生活随笔

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

Android

史上最具体Android集成QQ,微信,微博分享(不用第三方)持续更新中

發布時間:2025/5/22 Android 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 史上最具体Android集成QQ,微信,微博分享(不用第三方)持续更新中 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

    • QQ
      • 下載sdk并執行demo
      • 各種配置
      • IUiListener
      • 分享圖片
        • 分享到QQ
        • 分享到QZONE
    • Sina微博
      • 配置
      • 選擇集成sdk方式
      • 分享圖片
    • 微信
        • 朋友
        • 朋友圈

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

好。上面扯太多了。如今正式上代碼,我們先從QQ入手,你問為什么,由于他最簡單呀

QQ

下載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(假設須要),這下整個世界都清凈了,錯誤統統滾開了,如今就能夠執行看看效果

各種配置

配置權限

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- SDK2.1新增獲取用戶位置信息 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.GET_TASKS"/>

配置activity

<activity android:name="com.tencent.tauth.AuthActivity"android:launchMode="singleTask"android:noHistory="true" ><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><!-- 這地方的123456須要用你在開放平臺申請的appid替換 --><data android:scheme="tencent123456" /></intent-filter> </activity><activity android:name="com.tencent.connect.common.AssistActivity"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() {@Overridepublic void onCancel() {if (shareType != QQShare.SHARE_TO_QQ_TYPE_IMAGE) {Util.toastMessage(QQShareActivity.this, "onCancel: ");}}@Overridepublic void onComplete(Object response) {// TODO Auto-generated method stubUtil.toastMessage(QQShareActivity.this, "onComplete: " + response.toString());}@Overridepublic void onError(UiError e) {// TODO Auto-generated method stubUtil.toastMessage(QQShareActivity.this, "onError: " + e.errorMessage, "e");} };//假設要收到QQ分享,或登錄的一些狀態,必須加入代碼 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {Tencent.onActivityResultData(requestCode,resultCode,data,listener); }

分享圖片

我這僅僅貼我們今天用到的代碼。其它的大家能夠直接在demo里面復制。本文主要內容是。記錄一些配置。而并非貼代碼

分享到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() {@Overridepublic void run() {if (null != mTencent) {mTencent.shareToQQ(QQActivity.this, params, qqShareListener);}}}); }

分享到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。他要幫我顯示,但你給他一個私有文件夾。他肯定不能顯示。那種重點來了。這就到導致非常多朋友在做分享時。分享的圖片不能顯示得原因了。

別我是怎么知道的。我說我猜的,你信么~~

QQ實例完整代碼,由于肯定問了,既然上面貼了部分代碼,為啥以下還要全貼處理。這你就不懂了吧,上面我僅僅貼了部分,可是他們沒多大的關聯性。可能不太好理解,而我希望的就是。大家一看看就明確了,不須要再下載demo再在手機上跑一遍,就能解決這個問題。效果才是王道

package cn.woblog.testthirdpartyfunction.activity;import android.content.Intent; import android.os.Bundle; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.view.View;import com.tencent.connect.share.QQShare; import com.tencent.open.utils.ThreadManager; import com.tencent.tauth.IUiListener; import com.tencent.tauth.Tencent; import com.tencent.tauth.UiError;import cn.woblog.testthirdpartyfunction.R; import cn.woblog.testthirdpartyfunction.Util;public class QQActivity extends AppCompatActivity {public static Tencent mTencent;private static final String mAppid = "1105245621";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_qq);if (mTencent == null) {mTencent = Tencent.createInstance(mAppid, this);}}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);}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() {@Overridepublic void run() {if (null != mTencent) {mTencent.shareToQQ(QQActivity.this, params, qqShareListener);}}});}IUiListener qqShareListener = new IUiListener() {@Overridepublic void onCancel() {Util.toastMessage(QQActivity.this, "onCancel: ");}@Overridepublic void onComplete(Object response) {// TODO Auto-generated method stubUtil.toastMessage(QQActivity.this, "onComplete: " + response.toString());}@Overridepublic void onError(UiError e) {// TODO Auto-generated method stubUtil.toastMessage(QQActivity.this, "onError: " + e.errorMessage, "e");}};@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {Tencent.onActivityResultData(requestCode, resultCode, data, qqShareListener);} }

Sina(微博)

我們到官方文檔下載對應的官方demo并且多看看項目的ReadeMe。寫的非常具體讓你少走彎路。

解壓后項目結構如圖所看到的:

假設是第一次集成。我們能夠直接執行WeiboSDKDemo_v3.1.4.apk先查看效果,這樣也方便你對他的功能和效果有一個大概了解,當如也能夠直接導入demo-src文件夾以下的代碼,

通過這樣的方式執行project時,請務必替換默認的 debug.keystore文件,否則無法正確的授權成功。

另外,該debug.keysotre 是新浪官方的,除了編譯執行官方 DEMO 外,請不要直接使用它,出于安全的考慮。您應該為自己的應用提供一份 keysotre。

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

配置

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

配置權限,假設已經加入了對應的權限。就不要反復加入了

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

配置返回微博的activity

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

<!--sina--> <activity android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"android:configChanges="keyboardHidden|orientation"android:windowSoftInputMode="adjustResize"android:exported="false" > </activity> <service android:name="com.sina.weibo.sdk.net.DownloadService"android:exported="false"> </service><!--\sina--><activity android:name=".activity.QQActivity"> </activity> <activity android:name=".activity.SinaActivity"><!-- 調用新浪原生SDK。須要注冊的回調activity --><intent-filter><action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /><category android:name="android.intent.category.DEFAULT" /></intent-filter> </activity>

選擇集成sdk方式

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

  • 直接導入weibosdkcore.jar:適用于僅僅須要授權、分享、網絡請求框架功能的項目
  • 引用WeiboSDKproject(Library):適用于微博授權、分享,以及須要登陸button、調用OpenAPI的項目

在這里我採用方式1。由于我不須要登錄button和直接調用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);

假設配置沒問題的話,到這一步已經是能夠分享得了,假設遇到什么問題。請在下方評論,我一定會回復的

package cn.woblog.testthirdpartyfunction.activity;import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Toast;import com.sina.weibo.sdk.api.ImageObject; import com.sina.weibo.sdk.api.WeiboMessage; import com.sina.weibo.sdk.api.share.BaseResponse; import com.sina.weibo.sdk.api.share.IWeiboHandler; import com.sina.weibo.sdk.api.share.IWeiboShareAPI; import com.sina.weibo.sdk.api.share.SendMessageToWeiboRequest; import com.sina.weibo.sdk.api.share.WeiboShareSDK; import com.sina.weibo.sdk.constant.WBConstants;import cn.woblog.testthirdpartyfunction.Constants; import cn.woblog.testthirdpartyfunction.R;public class SinaActivity extends AppCompatActivity implements IWeiboHandler.Response {private IWeiboShareAPI mWeiboShareAPI;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sina);// 創建微博分享接口實例mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, Constants.APP_KEY);// 注冊第三方應用到微博client中,注冊成功后該應用將顯示在微博的應用列表中。// 但該附件欄集成分享權限須要合作申請。詳情請查看 Demo 提示// NOTE:請務必提前注冊,即界面初始化的時候或是應用程序初始化時,進行注冊mWeiboShareAPI.registerApp();// 當 Activity 被又一次初始化時(該 Activity 處于后臺時。可能會由于內存不足被殺掉了)。// 須要調用 {@link IWeiboShareAPI#handleWeiboResponse} 來接收微博client返回的數據。// 執行成功,返回 true,并調用 {@link IWeiboHandler.Response#onResponse};// 失敗返回 false。不調用上述回調if (savedInstanceState != null) {mWeiboShareAPI.handleWeiboResponse(getIntent(), this);}}public void testShareImage(View view) {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);}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);// 從當前應用喚起微博并進行分享后。返回到當前應用時,須要在此處調用該函數// 來接收微博client返回的數據;執行成功,返回 true,并調用// {@link IWeiboHandler.Response#onResponse}。失敗返回 false,不調用上述回調mWeiboShareAPI.handleWeiboResponse(intent, this);}/*** 接收微client博請求的數據。

* 當微博client喚起當前應用并進行分享時,該方法被調用。

* * @param baseResp 微博請求數據對象 * @see {@link IWeiboShareAPI#handleWeiboRequest} */

@Override public void onResponse(BaseResponse baseResp) { if (baseResp != null) { switch (baseResp.errCode) { case WBConstants.ErrorCode.ERR_OK: Toast.makeText(this, "success", Toast.LENGTH_LONG).show(); break; case WBConstants.ErrorCode.ERR_CANCEL: Toast.makeText(this, "cancel", Toast.LENGTH_LONG).show(); break; case WBConstants.ErrorCode.ERR_FAIL: Toast.makeText(this, "Error Message: " + baseResp.errMsg, Toast.LENGTH_LONG).show(); break; } } } }

微信

說道微信又不得不吐槽了,要想獲得微信登錄。還得是企業賬戶才干申請。還得交錢,你說這叫什么事

首先我打開微信開發人員官網,注冊個賬號或者用已有的賬號登錄,在管理中心創建應用并提交審核,審完完畢例如以下圖。

能夠看到我們已經獲得,分享到朋友圈或朋友的權限,微信登錄等還須要申請。那我如今僅僅有先測試分享了

首先我們來到開發人員官網文檔下載對應的sdk和開發文檔

這當中我僅僅下載了例如以下sdk

第一個是:獲取簽名的,只是我感覺不太好用,由于他沒有復制簽名的button,每次還得照著一個一個打出來,我推薦用微博的簽名工具

第二個是:使用微信分享、登錄、收藏、支付等功能須要的庫以及文件

第三個是:范例代碼。包括了一個完整的范例project。該范例的使用能夠參閱Android平臺上手指南

首先我們用eclipse導入演示樣例代碼,替換當前文件夾下的keystore。然后執行就能夠查看相關演示樣例

以下我們就應該來安裝官方文檔來集成sdk了

首先在官網創建一個應用。獲取到AppId,然后把剛剛下載的sdk包里面的libammsdk.jar復制到你的項目libs文件夾下。并加入到path(假設須要)

配置權限:

講到這里,有的吐槽了,你看看這個排版,簡直是差評

在看看我們以下的代碼。這排版,這樣是,一看就是非常帥的人寫的~~

<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.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

配置activity

由于我們要接受微信分享的一些信息,比方:分享成功或失敗

這一步非常重要,配置錯誤將收不到消息,在你的包名根文件夾下創建wxapi包。然后在該包下創建activity命名為WXEntryActivity并實現IWXAPIEventHandler接口,基本代碼例如以下:

package cn.woblog.testthirdpartyfunction.wxapi;import android.os.Bundle; import android.support.v7.app.AppCompatActivity;import com.tencent.mm.sdk.openapi.BaseReq; import com.tencent.mm.sdk.openapi.BaseResp; import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;import cn.woblog.testthirdpartyfunction.R;public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_wxentry);}// 微信發送請求到第三方應用時,會回調到該方法@Overridepublic void onReq(BaseReq baseReq) {}// 第三方應用發送到微信的請求處理后的響應結果,會回調到該方法@Overridepublic void onResp(BaseResp baseResp) {} }

載清單文件中配置你的activity

<activity android:name=".wxapi.WXEntryActivity" android:exported="true"> </activity>

創建實例,并注冊到微信

“`java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wxentry);

//假設分享的時候。該界面沒有開啟,那么微信開始這個activity時,會調用onCreate。所以這里要處理微信的返回結果 WxActivity.api.handleIntent(getIntent(), this);

}

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
//假設分享的時候,該已經開啟,那么微信開始這個activity時。會調用onNewIntent,所以這里要處理微信的返回結果
setIntent(intent);
WxActivity.api.handleIntent(intent, this);
}

## 分享圖片```java /*** @param isShareFriend true 分享到朋友。false分享到朋友圈*/ private void share2Wx(boolean isShareFriend) {Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);WXImageObject imgObj = new WXImageObject(bitmap);WXMediaMessage msg = new WXMediaMessage();msg.mediaObject = imgObj;Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, THUMB_SIZE, THUMB_SIZE, true);//縮略圖大小bitmap.recycle();msg.thumbData = Util.bmpToByteArray(thumbBmp, true); // 設置縮略圖SendMessageToWX.Req req = new SendMessageToWX.Req();req.transaction = buildTransaction("img");req.message = msg;req.scene = isShareFriend ? SendMessageToWX.Req.WXSceneSession : SendMessageToWX.Req.WXSceneTimeline;api.sendReq(req); }<div class="se-preview-section-delimiter"></div>

朋友

這里就簡單了。直接調用上面的方法
share2Wx(true);

朋友圈

share2Wx(false);<div class="se-preview-section-delimiter"></div>

這里是這個分享的完整代碼

package cn.woblog.testthirdpartyfunction.activity;import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View;import com.tencent.mm.sdk.openapi.IWXAPI; import com.tencent.mm.sdk.openapi.SendMessageToWX; import com.tencent.mm.sdk.openapi.WXAPIFactory; import com.tencent.mm.sdk.openapi.WXImageObject; import com.tencent.mm.sdk.openapi.WXMediaMessage; import com.tencent.mm.sdk.platformtools.Util;import cn.woblog.testthirdpartyfunction.Constants; import cn.woblog.testthirdpartyfunction.R;public class WxActivity extends AppCompatActivity {private static final int THUMB_SIZE = 150;public static IWXAPI api;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_wx);// 通過WXAPIFactory工廠,獲取IWXAPI的實例api = WXAPIFactory.createWXAPI(this, Constants.WX_APP_ID, false);// 將該app注冊到微信api.registerApp(Constants.WX_APP_ID);}/*** 分享一張圖片到朋友** @param view*/public void testShareImage2friend(View view) {share2Wx(true);}/*** 分享一張圖片到朋友圈** @param view*/public void testShareImage2friends(View view) {share2Wx(false);}/*** @param isShareFriend true 分享到朋友,false分享到朋友圈*/private void share2Wx(boolean isShareFriend) {Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);WXImageObject imgObj = new WXImageObject(bitmap);WXMediaMessage msg = new WXMediaMessage();msg.mediaObject = imgObj;Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, THUMB_SIZE, THUMB_SIZE, true);//縮略圖大小bitmap.recycle();msg.thumbData = Util.bmpToByteArray(thumbBmp, true); // 設置縮略圖SendMessageToWX.Req req = new SendMessageToWX.Req();req.transaction = buildTransaction("img");req.message = msg;req.scene = isShareFriend ?

SendMessageToWX.Req.WXSceneSession : SendMessageToWX.Req.WXSceneTimeline; api.sendReq(req); } private String buildTransaction(final String type) { return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); } }

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

上面的測試的代碼我放到github了,有什么問題能夠直接評論或者在github上創建issure

假設我的文章對來帶來的幫助,可加我微信。微博,QQ什么啥的交個朋友也是不錯的。另外微信。微博都會不定期發一些優質的文章,感謝大家的支持~~

轉載于:https://www.cnblogs.com/jzdwajue/p/7268464.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

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

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