1. 程式人生 > >Android APP整合新浪微博分享功能

Android APP整合新浪微博分享功能

新浪微博分享功能整合

直接匯入weibosdkcore.jar:適用於只需要授權、分享、網路請求框架功能的專案。
無論使用哪一種方式,都需要先將demo中lib目錄下的對應的全部 libweibosdkcore.so檔案目錄拷貝到你的目標工程中Demo。在app–>src–>main中新建資料夾jniLibs,將demo 中lib目錄下的對應的全部 libweibosdkcore.so檔案目錄拷貝到其中,不要改變任何檔案和資料夾位置。

分享時參考demo中WBShareMainActivity,這裡是分享的入口,主要程式碼如下:

// 建立微博 SDK 介面例項
        mWeiboShareAPI = WeiboShareSDK.createWeiboAPI
(mContext, SysConstants.SHARE_WEIBO_APP_ID); // 註冊到新浪微博 mWeiboShareAPI.registerApp(); Intent i = new Intent(mContext, WBShareActivity.class); i.putExtra(WBShareActivity.KEY_SHARE_TYPE, WBShareActivity.SHARE_ALL_IN_ONE); i.putExtra(WBShareActivity.IMAGE_URL, imgUrl);
mContext.startActivity(i);

分享之前需要將APP_KEY等引數替換成自己應用的引數,引數可以參考Demo裡的Constants類。

在進行微博分享前,需要在AndroidManifest.xml中,在需要接收訊息的Activity(喚起微博主程式的類)裡宣告對應的Action:ACTION_SDK_REQ_ACTIVITY,如下所示:

<activity
    android:name="com.sina.weibo.sdk.demo.WBShareActivity"
    android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait" >
<intent-filter> <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser" android:configChanges="keyboardHidden|orientation" android:windowSoftInputMode="adjustResize" android:exported="false" > </activity>

分享的功能主要是由WBShareActivity實現的,包括文字、圖片、網頁、音樂、視訊、聲音,具體程式碼參考Demo。

WBShareActivity裡實現了IWeiboHandler#Response介面,接收分享後微博返回的資料,程式碼如下所示:

/**
     * 接收微客戶端博請求的資料。
     * 當微部落格戶端喚起當前應用並進行分享時,該方法被呼叫。
     * 
     * @param baseRequest 微博請求資料物件
     * @see {@link IWeiboShareAPI#handleWeiboRequest}
     */
    @Override
    public void onResponse(BaseResponse baseResp) {
        if(baseResp!= null){
            switch (baseResp.errCode) {
            case WBConstants.ErrorCode.ERR_OK:
                Toast.makeText(this, R.string.weibosdk_demo_toast_share_success, Toast.LENGTH_LONG).show();
                break;
            case WBConstants.ErrorCode.ERR_CANCEL:
                Toast.makeText(this, R.string.weibosdk_demo_toast_share_canceled, Toast.LENGTH_LONG).show();
                break;
            case WBConstants.ErrorCode.ERR_FAIL:
                Toast.makeText(this, 
                        getString(R.string.weibosdk_demo_toast_share_failed) + "Error Message: " + baseResp.errMsg, 
                        Toast.LENGTH_LONG).show();
                break;
            }
        }
    }

需要注意的是,在WBShareActivity分享圖片的方法getImageObj中,註釋中說所設定的縮圖,並非是分享時的圖片。我們只需要將需要分享的圖片放到imageObject裡即可,沒有32K的大小限制。如果我們將縮圖放在imageObject中,則分享的圖片為縮圖,看不清楚。

/**
     * 建立圖片訊息物件。
     * 
     * @return 圖片訊息物件。
     */
    private ImageObject getImageObj() {
        ImageObject imageObject = new ImageObject();
        BitmapDrawable bitmapDrawable = (BitmapDrawable) mImageView.getDrawable();
        //設定縮圖。 注意:最終壓縮過的縮圖大小不得超過 32kb。
        /*上面的註釋是demo裡的,但是其實這裡並不必要設定縮圖,只需要將我們分享的圖片直接設定到imageObjet裡即可*/
        Bitmap  bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_logo);
        imageObject.setImageObject(bitmap);
        return imageObject;
    }

其他事項可參考新浪微博sdk自帶的文件。