隨着微信小程序的迅速發展,現在很多的工具都做成小程序了,比如查快遞,掃發票等;這些功能做到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,在註冊的時候也要對應包名