App和微信小程序的通信

   隨着微信小程序的迅速發展,現在很多的工具都做成小程序了,比如查快遞,掃發票等;這些功能做到app或者SDK裏面也是可以的,但是相對來說會增加Apk的大小;如果我們需要某些工具類的功能接入微信的小程序,也是很方便的。

在接入小程序前我們肯定要閱讀騰訊給我們提供的API:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN

下面就直接上代碼了

首先引入微信提供的SDK (在app目錄的build文件裏面)

//微信
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

在項目根目錄的build文件添加(不加可能會引入SDK失敗)

maven {url 'https://maven.aliyun.com/repository/public'}
google()
jcenter()

初始化微信(建議在Application裏面)

IWXAPI api api = WXAPIFactory.createWXAPI(this, "在騰訊註冊的appid",true);
api.registerApp("在騰訊註冊的appid");

調起小程序

req = new WXLaunchMiniProgram.Req(); req.userName = "小程序的Id"; req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;
api.sendReq(req);
通過以上方式我們就調起了我們需要的小程序,下面我們需要拿到小程序給我們返回的內容了;

在我們的根目錄包的目錄下創建一個新的包wxapi,在這個新包裏新建一個WXEntryActivity

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {

    @Override
    public void onReq(BaseReq baseReq) {
        Log.i("extraData1", "回調失敗");
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        MainActivity.api.handleIntent(getIntent(), this);
        super.onCreate(savedInstanceState);
    }

    @Override
    public void onResp(BaseResp baseResp) {
        if (baseResp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
            WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) baseResp;
            String extraData = launchMiniProResp.extMsg;//微信返回的數據,格式是一個Json
        }
        finish();
    }
}

在我們的AndroidManifest文件裏面註冊WXEntryActivity

<activity
    android:name="你在騰訊註冊的包名.wxapi.WXEntryActivity"
    android:exported="true"//必須添加這個
    android:taskAffinity="你在騰訊註冊的包名"
   >
</activity>

項目裏面如果是多環境的話需要配置多個包名,我們需要在對應的包名下創建WXEntryActivity,在註冊的時候也要對應包名

 

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