Android APP分享微信小程序


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

最近,微信小程序比較火熱,公司也在做這一塊,目前公司的小程序都是由H5端開(kāi)發(fā)的,我們Android端也接到一個(gè)任務(wù),那就是Android端應(yīng)支持微信小程序的分享,并且通過(guò)分享出去的小程序可以啟動(dòng)我們的APP;

今天我們先來(lái)完成:Android端應(yīng)支持微信小程序的分享?。。?/p>


分析:
微信開(kāi)放平臺(tái)SDK支持小程序類(lèi)型分享,詳見(jiàn)官方文檔:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317340&token=&lang=zh_CN
a) 要求發(fā)起分享的App與小程序?qū)儆谕晃⑿砰_(kāi)放平臺(tái)帳號(hào);
b) 支持分享小程序類(lèi)型消息至好友會(huì)話,不支持“分享至朋友圈” “收藏”;
c) 微信客戶(hù)端版本要求:6.5.6及以上微信客戶(hù)端版本,若客戶(hù)端版本低于6.5.6,小程序類(lèi)型分享將自動(dòng)轉(zhuǎn)成網(wǎng)頁(yè)類(lèi)型分享。開(kāi)發(fā)者必須填寫(xiě)網(wǎng)頁(yè)鏈接字段,確保低版本客戶(hù)端能正常打開(kāi)網(wǎng)頁(yè)鏈接;
d) 支持分享大圖卡片樣式,自定義圖片建議長(zhǎng)寬比是 5:4。6.5.9及以上版本微信客戶(hù)端小程序類(lèi)型分享使用大圖卡片樣式。
e)支持分享開(kāi)發(fā)版/體驗(yàn)版小程序,為支持開(kāi)發(fā)者調(diào)試,開(kāi)發(fā)者工具包支持分享開(kāi)發(fā)版/體驗(yàn)版小程序至微信,開(kāi)發(fā)者可控制分享的小程序版本。

把文檔看了一遍,發(fā)現(xiàn)限制是比較多的,但是功能實(shí)現(xiàn)還是很簡(jiǎn)單的,下面讓我們開(kāi)始吧?。?!

開(kāi)發(fā):

  1. 前期準(zhǔn)備


    1.png
  2. 小程序與APP主體賬號(hào)綁定
    開(kāi)發(fā)人員希望通過(guò)APP分享小程序,需要先將小程序與APP主體賬號(hào)(即APP的微信開(kāi)放平臺(tái)賬號(hào))綁定,APP才具有分享對(duì)應(yīng)小程序的能力。如果沒(méi)有與主體賬號(hào)綁定,分享時(shí)是報(bào)錯(cuò)的,如下圖:


    2.png

2.1. 登錄APP所在的微信開(kāi)放平臺(tái):https://open.weixin.qq.com/
2.2. 綁定小程序

3.png

由上圖可以看到,綁定小程序的數(shù)量是有限制的。我們點(diǎn)擊【綁定小程序】按鈕,打開(kāi)的新頁(yè)面
4.png

輸入小程序開(kāi)發(fā)的主賬號(hào)和密碼,輸入驗(yàn)證碼提交就可以了,然后再通過(guò)手機(jī)微信掃碼驗(yàn)證一下。
綁定成功后,直接就能在綁定列表中看到已綁定的小程序?。。?p>

  1. 代碼實(shí)現(xiàn)
    3.1 小程序端提供參數(shù):
miniProgram.userName="xxx"; //小程序ID
miniProgram.path="pages/xxx/xxx"; //小程序路徑

3.2 配置gradle

dependencies {
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}

3.3 分享小程序的核心代碼

findViewById(R.id.send_mini).setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                WXMiniProgramObject miniProgram = new WXMiniProgramObject();
                miniProgram.webpageUrl="http://www.qq.com";//自定義
                miniProgram.userName="xxxxxxxxx";//小程序端提供參數(shù)
                miniProgram.path="pages/entry";//小程序端提供參數(shù)
                WXMediaMessage mediaMessage = new WXMediaMessage(miniProgram);
                mediaMessage.title = "cgw miniProgram";//自定義
                mediaMessage.description = "this is miniProgram's description";//自定義
                Bitmap bitmap = BitmapFactory.decodeResource(SendToWXActivity.this.getResources(),R.drawable.fightk);
                Bitmap sendBitmap = Bitmap.createScaledBitmap(bitmap,200,200,true);
                bitmap.recycle();
                mediaMessage.thumbData = Util.bmpToByteArray(sendBitmap,true);
                SendMessageToWX.Req req = new SendMessageToWX.Req();
                req.transaction = "";
                req.scene = SendMessageToWX.Req.WXSceneSession;
                req.message = mediaMessage;
                api.sendReq(req);
            }
        });
  1. Demo演示
    為了避免麻煩,我們直接下載使用官方Demo,在其源代碼上直接修改,修改的內(nèi)容主要如下:
    a. 包名(必須修改,使用你項(xiàng)目APP的實(shí)際包名)
    b. 配置gradle(微信sdk包、簽名文件)
    c. 增加分享小程序的按鈕和事件

4.1 下載微信開(kāi)放平臺(tái)官方Demo
https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/WeChatSDK_sample_Android.zip

4.2 修改包名
使用Androidstudio打開(kāi)demo,目錄結(jié)構(gòu)如下圖,修改其包名

5.jpg

4.2.1如上圖,取消compact empty middle packages的默認(rèn)選中
4.2.2在對(duì)應(yīng)包名的文件夾上,直接右鍵修改名稱(chēng),改成包名對(duì)應(yīng)的名稱(chēng),并全部應(yīng)用
可參考:http://m.itdecent.cn/p/557e1906db1a
修改后的包名,必須是你項(xiàng)目APP的實(shí)際包名,且已通過(guò)微信開(kāi)放平臺(tái)審核的APP包名;

4.3 配置gradle(修改依賴(lài)、修改簽名)


6.png

簽名必須使用你項(xiàng)目APP對(duì)應(yīng)的簽名文件,即你申請(qǐng)微信開(kāi)放平臺(tái)時(shí)APP對(duì)應(yīng)的簽名文件;

4.4 修改APP_ID

public class Constants {
    // APP_ID 替換為你的應(yīng)用從官方網(wǎng)站申請(qǐng)到的合法appId
    public static final String APP_ID = "wxf666676666636666";

    public static class ShowMsgActivity {
        public static final String STitle = "showmsg_title";
        public static final String SMessage = "showmsg_message";
        public static final String BAThumbData = "showmsg_thumb_data";
    }
}

4.5 增加分享小程序的按鈕和事件


8.png

7.jpg

4.6 測(cè)試
選擇分享的人員


9.png

收到分享的小程序卡片


10.jpg

至此,Demo演示完畢,如有問(wèn)題,請(qǐng)留言詢(xún)問(wèn)?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評(píng)論 25 708
  • 做事前一定要先有標(biāo)準(zhǔn)。 思考的標(biāo)準(zhǔn)——價(jià)值觀 結(jié)果的標(biāo)準(zhǔn)——目標(biāo) 行為(“做事”)的標(biāo)準(zhǔn)——規(guī)矩 招人的標(biāo)準(zhǔn)——崗...
    安老怪閱讀 1,552評(píng)論 0 2
  • 兩數(shù)交換 查找出現(xiàn)奇數(shù)次的字符 布隆過(guò)濾器 略
    遠(yuǎn)o_O閱讀 296評(píng)論 0 0
  • 今天這事,屬我倒霉,也算冥冥之中注定發(fā)生…… 上午九點(diǎn)的時(shí)候,孫姐下來(lái)刷卡。(這還是我做了這么久內(nèi)勤以來(lái)孫姐第一次...
    小馬愛(ài)笑閱讀 567評(píng)論 0 0

友情鏈接更多精彩內(nèi)容