首页 > 技术文章 > ShareSDK自定义微信WXEntryActivity

mz5210 2021-01-06 13:45 原文

在安卓端,如果想接收微信小程序回传到APP的值,是需要在WXEntryActivity中获取的。但是ShareSDK已经定义过一个WXEntryActivity了,怎么办呢?往下看

一、按照微信官方配置,添加WXEntryActivity

在您项目包名中创建wxapi包,然后创建WXEntryActivity,WXEntryActivity的内容如下:

/**
 * 微信客户端回调activity示例
 */
public class WXEntryActivity extends WechatHandlerActivity {

    /**
     * 处理微信发出的向第三方应用请求app message
     * <p>
     * 在微信客户端中的聊天页面有“添加工具”,可以将本应用的图标添加到其中
     * 此后点击图标,下面的代码会被执行。Demo仅仅只是打开自己而已,但你可
     * 做点其他的事情,包括根本不打开任何页面
     */

    public void onGetMessageFromWXReq(WXMediaMessage msg) {
        if (msg != null) {
            Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName());
            startActivity(iLaunchMyself);
        }
    }

    /**
     * 处理微信向第三方应用发起的消息
     * <p>
     * 此处用来接收从微信发送过来的消息,比方说本demo在wechatpage里面分享
     * 应用时可以不分享应用文件,而分享一段应用的自定义信息。接受方的微信
     * 客户端会通过这个方法,将这个信息发送回接收方手机上的本demo中,当作
     * 回调。
     * <p>
     * 本Demo只是将信息展示出来,但你可做点其他的事情,而不仅仅只是Toast
     */
    public void onShowMessageFromWXReq(WXMediaMessage msg) {
        //示例1
        if (msg != null && msg.mediaObject != null && (msg.mediaObject instanceof WXAppExtendObject)) {
            WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject;
            Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show();
            Log.e("QQQ", " onShowMessageFromWXReq " + obj.extInfo);
        }
        //示例2
        //从H5打开APP之后,携带的数据
        WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject;
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("description: ");
        stringBuffer.append(msg.description);
        stringBuffer.append("\n");
        stringBuffer.append("extInfo: ");
        stringBuffer.append(obj.extInfo);
        stringBuffer.append("\n");
        stringBuffer.append("filePath: ");
        stringBuffer.append(obj.filePath);

        Log.e("ShareSDK", " showmsg_title " + msg.title);
        Log.e("ShareSDK", " showmsg_message " + msg.toString());
        Log.e("ShareSDK", " showmsg_thumb_data " + msg.thumbData);
    }

}

注意这个activity继承了WechatHandlerActivity

二、配置AndroidManifest.xml

在AndroidManifest.xml的application标签中添加如下代码:

<activity
     android:name=".wxapi.WXEntryActivity"
     android:configChanges="keyboardHidden|orientation|screenSize"
     android:exported="true"
     android:launchMode="singleTask"
     android:screenOrientation="portrait"
     android:theme="@android:style/Theme.Translucent.NoTitleBar" />

三、完结

OK了,不信你试试

推荐阅读