Android APP分享微信小程序

需求:

Android APP端 將公司的微信小程序 分享至微信好友 

分析:

微信開放平臺SDK支持小程序類型分享,詳見官方文檔:https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Share_and_Favorites/Android.html

a) 要求發起分享的App與小程序屬於同一微信開放平臺帳號;
b) 支持分享小程序類型消息至好友會話,不支持“分享至朋友圈” “收藏”;
c) 微信客戶端版本要求:6.5.6及以上微信客戶端版本,若客戶端版本低於6.5.6,小程序類型分享將自動轉成網頁類型分享。開發者必須填寫網頁鏈接字段,確保低版本客戶端能正常打開網頁鏈接;
d) 支持分享大圖卡片樣式,自定義圖片建議長寬比是 5:4。6.5.9及以上版本微信客戶端小程序類型分享使用大圖卡片樣式。
e)支持分享開發版/體驗版小程序,爲支持開發者調試,開發者工具包支持分享開發版/體驗版小程序至微信,開發者可控制分享的小程序版本。

開發:

    IWXAPI msgApi = WXAPIFactory.createWXAPI(mContext, Constants.WX_APP_ID, true);
    // 將該app註冊到微信
    msgApi.registerApp(Constants.WX_APP_ID);//微信appid
    
    WXMiniProgramObject miniProgramObj = new WXMiniProgramObject();
    miniProgramObj.webpageUrl = mTargetUrl; // 兼容低版本的網頁鏈接
    miniProgramObj.miniprogramType = WXMiniProgramObject.MINIPTOGRAM_TYPE_RELEASE;// 正式版:0,測試版:1,體驗版:2
    miniProgramObj.userName = "小程序原始id";     // 小程序原始id
    //        miniProgramObj.path = "/pages/home/home";        //小程序頁面路徑
    
    WXMediaMessage msg = new WXMediaMessage(miniProgramObj);
    msg.title =mTitle; // 小程序消息title
    msg.description = mSummary;   // 小程序消息desc
    Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(),R.mipmap.app_logo);
    Bitmap sendBitmap = Bitmap.createScaledBitmap(bitmap,200,200,true);
    bitmap.recycle();
    msg.thumbData = HzqUtils.bmpToByteArray(sendBitmap);
    SendMessageToWX.Req req = new SendMessageToWX.Req();
    //                    req.transaction = buildTransaction("webpage");
    req.message = msg;
    req.scene = SendMessageToWX.Req.WXSceneSession;  // 目前支持會話

bmpToByteArray工具類:

public static byte[] bmpToByteArray (Bitmap bitmap) {

        // 要返回的字符串
        byte[] reslut = null;

        ByteArrayOutputStream baos = null;

        try {
            if (bitmap != null) {
                baos = new ByteArrayOutputStream();
                /**
                 * 壓縮只對保存有效果bitmap還是原來的大小
                 */
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);

                baos.flush();
                baos.close();
                // 轉換爲字節數組
              reslut= baos.toByteArray();

            } else {
                return null;
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (baos != null) {
                    baos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        return reslut;

    }

完畢!

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章