乐趣区

关于android-sdk:MobTech-ShareSDK-Android端微信分享小程序

前言:首先要集成 ShareSDK,集成步骤请查看这里;

1. 微信开发者后盾的相干信息配置

集成完之后做小程序的分享,首先要申请完小程序到微信开放平台绑定到本人的利用,否则无奈胜利分享,绑定的地位如下图:

绑定完之后点击查看如下图所示能够看到原始 ID,这个前面分享会用到;

分享小程序的页面门路能够间接复制

2. 分享微信小程序

ShareSDK 分享小程序只是 ShareSDK 分享微信的一种类型,只有设置对类型和办法即可;

微信分享登录等,必须要保障微信开放平台 –> 管理中心 –> 挪动利用 –> 你的利用(查看进入)–> 开发信息,中配置的我的项目的包名和利用签名,与您的 app 的包名和签名统一,否则无奈分享;

2.1OneKeyShare 接口分享小程序阐明
OneKeyShare 的分享须要先确定分享类型,代码如下:

OnekeyShare oks = new OnekeyShare();
  oks.setTitle("题目测试");
  oks.setText("lalalla http://open.qq.com");
  oks.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");
  oks.setUrl("http://open.qq.com");
  oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() {
      @Override
      public void onShare(Platform platform,
      cn.sharesdk.framework.Platform.ShareParams paramsToShare) {if(platform.getName().equals("Wechat")){paramsToShare.setShareType(Platform.SHARE_WXMINIPROGRAM);// 分享小程序类型
              paramsToShare.setWxUserName("gh_52568203455c");// 配置小程序原始 ID,后面有截图阐明
              paramsToShare.setWxPath("pages/index/index");// 分享小程序页面的具体门路,后面截图从微信小程序开发工具中能够间接复制    }
      });    
  oks.setCallback(new PlatformActionListener() {
        @Override
        public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {Log.d("ShareSDK", "onComplete ---->  分享胜利");
        }
        @Override
        public void onError(Platform platform, int i, Throwable throwable) {Log.d("","onError ---->  失败 " + throwable.getStackTrace());
        }
        @Override
        public void onCancel(Platform platform, int i) {Log.d("ShareSDK", "onCancel ---->  分享勾销");
        }
      });
   oks.show(MobSDK.getContext());
  • 小程序须要在 setShareContentCustomizeCallback 办法中,判断固定小程序的分享类型 ”SHARE_WXMINIPROGRAM”,判断完类型咱们来说下小程序的字段阐明,setWxUserName,小程序的原始 ID;setWxPath,这个办法中是传小程序分享后点击关上的小程序中的页面您的门路,这个能够到小程序开发工具中查看;
  • 其次是 oks 调用的 setText、setImageUrl(图片能够用 setImagePath 分享本地图片等)、setUrl、setTitle、这四个办法也是必须要的,小程序分享,如果微信客户端不反对的话会默认分型链接的类型,所以这几个办法也是必须配置的;
  • 微信的 AppId 和 AppSecret 的配置这里就不多赘述,能够去官网的集成文档理解配置的地位;

2.2 独自分享接口分享微信小程序

Platform sina2 = ShareSDK.getPlatform(Wechat.NAME);
                        ShareParams SP2 = new ShareParams();
                        SP2.setWxUserName("gh_52568203455c");  // 小程序原始 ID
                        SP2.setWxPath("pages/index/index");// 分享小程序页面门路
                        SP2.setTitle("题目分享");
                        SP2.setText("http://www.mob.com");
                        SP2.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");
                        SP2.setUrl("http://www.baidu.com");
 Wechat.ShareParams spa = new Wechat.ShareParams();
                    spa.setTitle("题目分享");
                    spa.setText("分享参数");
                    spa.setUrl("http://www.baidu.com");
                    spa.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");      
                    spa.setWxMiniProgramType(0);// 分享小程序类型:0- 正式,1- 开发,2- 体验
                    spa.setWxPath("pages/index/index");// 分享小程序页面门路
                    spa.setWxUserName("gh_52568203455c");// 小程序原始 ID
                    spa.setShareType(Platform.SHARE_WXMINIPROGRAM);// 分享小程序类型
                   // 设置分享事件回调(注:回调放在不能保障在主线程调用,不能够在外面间接解决 UI 操作)weChat.setPlatformActionListener(new PlatformActionListener() {
                        @Override
                        public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {platform.getName();
                            Log.d("ShareSDK", "onComplete ---->  分享胜利");
                        }
                        @Override
                        public void onError(Platform platform, int i, Throwable throwable) {Log.d("ShareSDK", "onError ---->  分享失败" + throwable.getStackTrace().toString());
                        }
                        @Override
                        public void onCancel(Platform platform, int i) {Log.d("ShareSDK", "onCancel ---->  分享勾销");
                        }
                    });// 执行图文分享
                    weChat.share(spa);

独自分享小程序代码如上,与原始分享没有差异只是多了两个参数,设置下分享类型即可,具体小程序原始 ID,如何绑定能够看第一中的阐明;

2.3 关上微信小程序
先浏览 2.1、2.2 步骤分享微信小程序,而后在第一步的根底上批改一个类型,setShareType,如下所示:

setShareType(Platform.OPEN_WXMINIPROGRAM);// 关上小程序

其余与第一步放弃不变即可,点击按钮,就能够间接关上小程序了;

3. 微信小程序关上 APP, 并获取参数

3.1 参数设置
首先须要仔细阅读下小程序的文档查看这里, 在小程序中设置对应的按钮和参数, 如下图所示:

3.2 客户端回调接口设置
在微信回调类中减少判断参数和关上 app 的操作:

public class WXEntryActivity extends WechatHandlerActivity {
    /**
     * 解决微信收回的向第三方利用申请 app message
     * <p>
     * 在微信客户端中的聊天页面有“增加工具”,能够将本利用的图标增加到其中
     * 尔后点击图标,上面的代码会被执行。Demo 仅仅只是关上本人而已,但你可
     * 做点其余的事件,包含基本不关上任何页面
     */
// 通过间接关上的微信小程序返回
    public void onGetMessageFromWXReq(WXMediaMessage msg) {if (msg != null && msg.wxminiprogram_ext_msg != null) {Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName());
            startActivity(iLaunchMyself);
            Log.e("ShareSDK", "WXEntryActivity onGetMessageFromWXReq ===>" + msg.wxminiprogram_ext_msg);
            WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject;
            Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show();}
    }
    /**
     * 解决微信向第三方利用发动的音讯
     * <p>
     * 此处用来接管从微信发送过去的音讯,比方说本 demo 在 wechatpage 外面分享
     * 利用时能够不分享利用文件,而分享一段利用的自定义信息。接受方的微信
     * 客户端会通过这个办法,将这个信息发送回接管方手机上的本 demo 中,当作
     * 回调。* <p>
     * 本 Demo 只是将信息展现进去,但你可做点其余的事件,而不仅仅只是 Toast
     */
    // 通过网页模式微信小程序返回
    public void onShowMessageFromWXReq(WXMediaMessage msg) {
        if (msg != null && msg.mediaObject != null
                && (msg.mediaObject instanceof WXAppExtendObject)) {WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject;
            Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show();}
    }

}
<!-- 微信分享回调 -->
        <activity
            android:name="我的项目包名.wxapi.WXEntryActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true" />

如上所示,配置完回传的参数,WXEntryActivity.java,在这个类中关上 app 即可。这样在小程序中关上 app 就能够跳转到 app 中了,并且能够获取到回传的参数。

退出移动版