Android接入指南

官方接入指南

1、在build.gradle文件中,添加如下依赖:

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

2、 AndroidManifest.xml 设置

添加必要的权限支持:

3、注册到微信

image.png

4、WXEntryActivity类使用

a、在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity
在AndroidManifest.xml添加


image.png

b、实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法

c. 在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法

当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,
类似的,应用请求微信的响应结果将通过onResp回调。.

5、混淆

-keep class com.tencent.mm.opensdk.** {*;}-keep class com.tencent.wxop.** {*;}-keep class com.tencent.mm.sdk.** {*;}

Android分享小程序到微信

官方接入分享指南

1、在你要分享小程序的位置加入如下代码

WXMiniProgramObject miniProgramObj = new WXMiniProgramObject();miniProgramObj.webpageUrl = "http://www.qq.com"; // 兼容低版本的网页链接miniProgramObj.miniprogramType = WXMiniProgramObject.MINIPTOGRAM_TYPE_RELEASE;// 正式版:0,测试版:1,体验版:2miniProgramObj.userName = "gh_xxxxxxxx";     // 小程序原始idminiProgramObj.path = "/pages/media";            //小程序页面路径WXMediaMessage msg = new WXMediaMessage(miniProgramObj);msg.title = "小程序消息Title";                    // 小程序消息titlemsg.description = "小程序消息Desc";               // 小程序消息descmsg.thumbData = getThumb();                      // 小程序消息封面图片,小于128kSendMessageToWX.Req req = new SendMessageToWX.Req();req.transaction = buildTransaction("webpage");req.message = msg;req.scene = SendMessageToWX.Req.WXSceneSession;  // 目前支持会话api.sendReq(req);

注意:
支持从APP分享小程序类型消息至微信,用户接收后可打开进入小程序。
要求:
发起分享的App与小程序属于同一微信开放平台帐号。
支持分享小程序类型消息至会话,暂不支持分享至朋友圈。
若客户端版本低于6.5.6,小程序类型分享将自动转成网页类型分享。开发者必须填写网页链接字段,确保低版本客户端能正常打开网页链接。

2、在WXEntryActivity添加如下代码

 /**     * 发送到微信请求的响应结果将回调到onResp,app调起微信回调     * @param baseResp     */    @Override    public void onResp(BaseResp baseResp) {        if (baseResp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {            WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) baseResp;            String extraData = launchMiniProResp.extMsg; // 对应JsApi navigateBackApplication中的extraData字段数据        }    }

小程序打开App

官方打开小程序指南

1、小程序端添加如下代码

 Page({  launchAppError (e) {    console.log(e.detail.errMsg)  }})

2、在WXEntryActivity添加如下代码

Android 第三方 app 需要处理 ShowMessageFromWX.req 的微信回调

 /**     * 微信发送的请求将回调到onReq方法,小程序调起app回调     * @param req     */    @Override    public void onReq(BaseReq req) {        switch (req.getType()) {            case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:                break;            case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:                goToShowMsg((ShowMessageFromWX.Req) req);                break;            default:                break;        }    }

3、接收小程序数据,并处理相关逻辑

 /**     * 接收从小程序跳转到app的数据,并进行处理     *     * @param showReq     */    @Subscribe    private void goToShowMsg(ShowMessageFromWX.Req showReq) {        WXMediaMessage wxMsg = showReq.message;        Intent intent = new Intent(this, MainActivity.class);        startActivity(intent);        finish();    }

小程序无法主动打开app,必须指定打开的页面

完整代码

public class YApplication extends MultiDexApplication {private static IWXAPI api;private void registerWeixin() {        api = WXAPIFactory.createWXAPI(this, WECHAT_KEY);        api.registerApp(WECHAT_KEY);}public static IWXAPI getWeiXinApi() {        return api;    }}
public class WXEntryActivity extends WXCallbackActivity implements IWXAPIEventHandler {    @Override    protected void onCreate(Bundle bundle) {        super.onCreate(bundle);        //注意:        //第三方开发者如果使用透明界面来实现WXEntryActivity,需要判断handleIntent的返回值//如果返回值为false,则说明入参不合法未被SDK处理,应finish当前透明界面,避免外部通过传递非法参数的Intent导致停留在透明界面,引起用户的疑惑        try {            if (!YApplication.getWeiXinApi().handleIntent(getIntent(), this)) {                finish();            }        } catch (Exception e) {            e.printStackTrace();        }    }    @Override    protected void onNewIntent(Intent intent) {        super.onNewIntent(intent);        setIntent(intent);        YApplication.getWeiXinApi().handleIntent(intent, this);    }    /**     * 微信发送的请求将回调到onReq方法,小程序调起app回调     * @param req     */    @Override    public void onReq(BaseReq req) {        switch (req.getType()) {            case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:                break;            case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:                goToShowMsg((ShowMessageFromWX.Req) req);                break;            default:                break;        }    }    /**     * 发送到微信请求的响应结果将回调到onResp,app调起微信回调     * @param baseResp     */    @Override    public void onResp(BaseResp baseResp) {        if (baseResp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {            WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) baseResp;            String extraData = launchMiniProResp.extMsg; // 对应JsApi navigateBackApplication中的extraData字段数据        }    }    /**     * 接收从小程序跳转到app的数据,并进行处理     *     * @param showReq     */    private void goToShowMsg(ShowMessageFromWX.Req showReq) {        WXMediaMessage wxMsg = showReq.message;        Intent intent = new Intent(this, MainActivity.class);        startActivity(intent);        finish();    }}
 public void shareToWXMiniProgram() {                WXMiniProgramObject miniProgramObj = new WXMiniProgramObject();                miniProgramObj.webpageUrl = "http://www.qq.com"; // 兼容低版本的网页链接                miniProgramObj.miniprogramType = WXMiniProgramObject.MINIPROGRAM_TYPE_PREVIEW;// 正式版:0,测试版:1,体验版:2                miniProgramObj.userName = "gh_XXXXXXXX";     // 小程序原始id//                miniProgramObj.path = "/pages/media";            //小程序页面路径                WXMediaMessage msg = new WXMediaMessage(miniProgramObj);                msg.title = title;                msg.description = desc;                Bitmap bmp = FileUtils.returnBitmap(image);                Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, 250, 150, true);                bmp.recycle();                msg.setThumbImage(thumbBmp); // 小程序消息封面图片,小于128k                SendMessageToWX.Req req = new SendMessageToWX.Req();                req.transaction = buildTransaction("webpage");                req.message = msg;                req.scene = SendMessageToWX.Req.WXSceneSession;  // 目前支持会话                YApplication.getWeiXinApi().sendReq(req);         }

注:体验版需要在小程序设置页面添加开发者的微信账号,才可以体验

更多相关文章

  1. Android基于Intent实现Activity之间数据传递的方法
  2. android中的回调
  3. Android(安卓)NotificationListenerService监听获取通知栏通知和
  4. android下实现程序不操作一段时间,执行另一个程序
  5. Android(安卓)简单的照相机程序
  6. Android下载后自动安装
  7. android 手机铃声获取
  8. Android(安卓)JNI C调用Java
  9. 删除Android包

随机推荐

  1. Android WIFI热点默认SSID的修改方法
  2. android 屏幕保持唤醒 不锁屏 android.pe
  3. Android之Menu菜单 onCreateOptionsMenu
  4. 将keras或tensorflow模型迁移到android端
  5. Android:Using shared element transitio
  6. Android 实现由下至上弹出并位于屏幕底部
  7. android Image zImage uImage boot.img分
  8. android 判断网络是否断开
  9. android 输出.txt 文本换行问题
  10. android 调用相机保存拍照后的图片