5.6.5 创建自定义菜单
接下来,需要根据表5-4中的网址数据创建菜单,将3个分类(技术交流、购物和网页游戏)作为一级菜单,将10个网站名称作为二级菜单。我们在项目中新建一个菜单管理器类MenuManager,该类的代码如下:
- package org.liufeng.weixin.main;
- import org.liufeng.course.menu.Button;
- import org.liufeng.course.menu.ClickButton;
- import org.liufeng.course.menu.ComplexButton;
- import org.liufeng.course.menu.Menu;
- import org.liufeng.course.menu.ViewButton;
- import org.liufeng.course.pojo.Token;
- import org.liufeng.course.util.CommonUtil;
- import org.liufeng.course.util.MenuUtil;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- /**
- * 菜单管理器类
- *
- * @author liufeng
- * @date 2013-10-17
- */
- public class MenuManager {
- private static Logger log = LoggerFactory.getLogger(MenuManager.class);
- /**
- * 定义菜单结构
- *
- * @return
- */
- private static Menu getMenu() {
- ClickButton btn11 = new ClickButton();
- btn11.setName("开源中国");
- btn11.setType("click");
- btn11.setKey("oschina");
- ClickButton btn12 = new ClickButton();
- btn12.setName("ITeye");
- btn12.setType("click");
- btn12.setKey("iteye");
- ViewButton btn13 = new ViewButton();
- btn13.setName("CocoaChina");
- btn13.setType("view");
- btn13.setUrl("http:// www.iteye.com");
- ViewButton btn21 = new ViewButton();
- btn21.setName("淘宝");
- btn21.setType("view");
- btn21.setUrl("http:// m.taobao.com");
- ViewButton btn22 = new ViewButton();
- btn22.setName("京东");
- btn22.setType("view");
- btn22.setUrl("http:// m.jd.com");
- ViewButton btn23 = new ViewButton();
- btn23.setName("唯品会");
- btn23.setType("view");
- btn23.setUrl("http:// m.vipshop.com");
- ViewButton btn24 = new ViewButton();
- btn24.setName("当当网");
- btn24.setType("view");
- btn24.setUrl("http:// m.dangdang.com");
- ViewButton btn25 = new ViewButton();
- btn25.setName("苏宁易购");
- btn25.setType("view");
- btn25.setUrl("http:// m.suning.com");
- ViewButton btn31 = new ViewButton();
- btn31.setName("多泡");
- btn31.setType("view");
- btn31.setUrl("http:// www.duopao.com");
- ViewButton btn32 = new ViewButton();
- btn32.setName("一窝88");
- btn32.setType("view");
- btn32.setUrl("http:// www.yi588.com");
- ComplexButton mainBtn1 = new ComplexButton();
- mainBtn1.setName("技术交流");
- mainBtn1.setSub_button(new Button[] { btn11, btn12, btn13 });
- ComplexButton mainBtn2 = new ComplexButton();
- mainBtn2.setName("购物");
- mainBtn2.setSub_button(new Button[] { btn21, btn22, btn23, btn24, btn25 });
- ComplexButton mainBtn3 = new ComplexButton();
- mainBtn3.setName("网页游戏");
- mainBtn3.setSub_button(new Button[] { btn31, btn32 });
- Menu menu = new Menu();
- menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 });
- return menu;
- }
- public static void main(String[] args) {
- // 第三方用户唯一凭证
- String appId = "000000000000000000";
- // 第三方用户唯一凭证密钥
- String appSecret = "11111111111111111111111111111111";
- // 调用接口获取凭证
- Token token = CommonUtil.getToken(appId, appSecret);
- if (null != token) {
- // 创建菜单
- boolean result = MenuUtil.createMenu(getMenu(), token.getAccessToken());
- // 判断菜单创建结果
- if (result)
- log.info("菜单创建成功!");
- else
- log.info("菜单创建失败!");
- }
- }
- }
在MenuManager类中,先通过getMenu()方法定义菜单结构,然后在main()方法中创建菜单。我们在MyEclipse中直接运行MenuManager类就能完成菜单的创建,在运行之前读者需要将代码中的appid和appSecret替换成自己的。菜单创建成功时,将会在MyEclipse控制台显示如图5-3所示的提示信息。
此时,重新关注公众账号,就能在手机上看到菜单效果,如图5-4所示。
图5-3 菜单创建成功时的提示信息(左)
图5-4 在手机上看到的菜单效果(右)