1.自定义菜单功能:

数据结构类型参照微信公众平台数据格式,这里不做分析:

创建相应的实体类:

public class Button {
//菜单类型
private String type;
//菜单名称
private String name;
//二级菜单
private Button[] sub_button;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Button[] getSub_button() {
return sub_button;
}
public void setSub_button(Button[] sub_button) {
this.sub_button = sub_button;
}

}

再创建ClickButton类

public class ClickButton extends Button{
//Click类型菜单key
private String key;

public String getKey() {
return key;
}

public void setKey(String key) {
this.key = key;
}

}

再创建ViewButton类

public class ViewButton extends Button{
//view类型菜单url
private String url;

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}

}

再创建我们的菜单类:

public class Menu {
//一级菜单
private Button[] button;

public Button[] getButton() {
return button;
}

public void setButton(Button[] button) {
this.button = button;
}

}

2.创建新增菜单的方法

public static Menu initMenu(){
Menu menu = new Menu();
ClickButton button11 = new ClickButton();
button11.setName("click菜单");
button11.setType("click");
button11.setKey("11");

ViewButton button21 = new ViewButton();
button21.setName("view菜单");
button21.setType("view");
button21.setUrl("http://www.baidu.com");//我这里测试使用百度网站

ClickButton button31 = new ClickButton();
button31.setName("扫码事件");
button31.setType("scancode_push");
button31.setKey("31");

ClickButton button32 = new ClickButton();
button32.setName("地理位置");
button32.setType("location_select");
button32.setKey("32");

Button button = new Button();
button.setName("菜单");
button.setSub_button(new Button[]{button31,button32});

menu.setButton(new Button[]{button11,button21,button});
return menu;

}

新增创建菜单访问请求路径常量

//创建菜单
public static int createMenu(String token,String menu) throws ParseException, IOException{
int result = 0;
String url = CREATE_MENU_URL.replace("ACCESS_TOKEN", token);
JSONObject jsonObject = doPostStr(url, menu);
if(jsonObject != null){
//正常返回0
result = jsonObject.getInt("errcode");
}
return result;

}

测试:

public class WeixinTest {
public static void main(String[] args){
try {
AccessToken token = WenXinUntil.getAccessToken();
/*String filePath = "‪D:/image/123.jpg";
String mediaId = WenXinUntil.upload(filePath,token.getToken(), "thumb");
System.out.println("票据"+token.getToken());
System.out.println("有效时间"+token.getExpiresIn());
System.out.println(mediaId);*/
String menu = JSONObject.fromObject(WenXinUntil.initMenu()).toString();
int result = WenXinUntil.createMenu(token.getToken(), menu);
if(result == 0){
System.out.println("创建菜单成功");
}else{
System.out.println("创建菜单失败");
}
} catch (Exception e) {
e.printStackTrace();
}

}

}

3.运行结果:

至此 微信自定义菜单完成!
附源码链接:链接:https://pan.baidu.com/s/11X4TjtupKeR0EIh3Xpsn2Q 
提取码:29mo

微信公众号开发整理(五)--自定义菜单相关推荐

  1. java 微信自定义菜单开发_微信公众号开发之设置自定义菜单实例代码【java版】...

    本实例是为了实现在管理后台实现微信菜单的添加删除管理. 1.首先我们需要新建一个数据库表用于存放menu菜单项 可包含的字段有id.父类id.name.排序.是否显示.类型(view.click).链 ...

  2. 微信公众号开发教程(四)自定义菜单

    作者:陈惠,叩丁狼教育高级讲师.原创文章,转载请注明出处. 本篇文章,我们来做一个最常见的,也是用户最喜欢使用的功能--自定义菜单. 因为菜单只需要点一下就可以获取需要的信息,无需用户手动输入关键字, ...

  3. 微信公众号开发教程[011]-自定义菜单以及个性化菜单

    自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单.类型分别有click,view,scancode_push,scancode_waitmsg,pic_sysphoto,pic_pho ...

  4. 微信公众号开发(五)个性化菜单

    微信公众号开发(五)个性化菜单 个性化菜单让公众号的不同用户群体看到不一样的自定义菜单.该接口开放给已认证订阅号和已认证服务号,个性化菜单要求用户的微信客户端版本在iPhone6.2.2,Androi ...

  5. .Net6+Furion+Sqlsugar+SenparcSdk开发微信公众号系列之八:自定义菜单

    一.创建接口 1.1.注意事项 自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单. 一级菜单最多4个汉字,二级菜单最多8个汉字,多出来的部分将会以"..."代替. ...

  6. 微信公众号开发之实现自定义微信公众号菜单和跳转第三方网页

    自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCE ...

  7. 微信公众号开发整理(一)所有微信资料整理参考慕课网学习而得

    1.www.baidu.com搜索:微信公众平台登录,输入账号密码进行登录 2.登录之后找到左边最后一个菜单:开发==>基本配置,如下,获取开发者ID(AppID)及开发者密码(AppSecre ...

  8. 微信公众号的分类与自定义菜单接口

    1.订阅号 为媒体和个人提供一种信息传播方式,主要偏于为用户传达资讯(类似报纸杂志),主要的定位是阅读,每天可以群发1条消息: 2.服务号 为企业,政府或组织提供对用户进行服务,主要偏于服务交互(类似 ...

  9. 使用微信公众号测试号如何进行自定义菜单的设定

    问题描述 在进行微信公众号业务开发的时候,微信公众号的自定义菜单是非常重要的一环,然而在开发中我们是使用不到正式的公众号进行菜单栏的自定义的,都是通过我们个人申请的测试公众号来完成我们的功能开发和测试 ...

  10. 实例:用C#.NET手把手教你做微信公众号开发(9)--菜单设置

    一.菜单定义 先看个直观的图,菜单在公众号的底部,当一个公众号没有设置菜单时是看不到的,设置之后就是下面的样子. 注意事项: 自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单. 一级菜 ...

最新文章

  1. Mycat分库分表核心技术分析
  2. 中新赛克数据可视化_中新赛克——能否构建更安全的世界
  3. 什么是JAX-RS注释?
  4. 同学之间互相出的一些有趣题目
  5. 网易被曝暴力裁患绝症员工,回应:存在不近人情的地方,向前同事道歉
  6. [转]《精通Javascript》笔记:第六章(事件)
  7. SLAM学习笔记-------------(八)视觉里程计2
  8. 怎么在html中加入pjax,网页添加Pjax代码实现无刷新加载
  9. 从春运迁徙图看疫情变化
  10. 花生壳域名绑定动态IP原理浅析
  11. 机器学习资料与攻略超强整理吐血推荐(二)
  12. 表格控件SpreadJS助力上市企业明源云,打造更智慧的地产生态链
  13. Spring -> Spring Boot、Spring MVC 和 Spring 有什么区别
  14. python调用pyd_使用python pyd时出错
  15. Amnesia失忆症攻略(本篇+later+crowd)
  16. python27是什么文件夹可以删除吗_python如何跳过错误继续运行,同时删除产生错误的文档...
  17. 微信小程序下拉选择框
  18. iOS模拟器调试WebView
  19. 地图数据快速渲染------基于分布式系统的准实时渲染技术(前段+后端)
  20. SitePoint Podcast#162:以Google为动力

热门文章

  1. Axure长页面滚动拖动制作
  2. 常用连续型随机变量的概率分布表(附概率密度函数全域积分等于1、期望、方差的推导与证明)
  3. 全志V3s USB PHY驱动分析
  4. css手机触摸屏媒体查询
  5. Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇)
  6. 简单的ps去掉图片上不想留的文字
  7. i++是线程安全的吗
  8. Excel分类汇总2个维度的结果,1个计数1个求和
  9. 使用FFmpeg进行屏幕录像和录音
  10. [兰顿蚂蚁]有感--诡异又不失优雅的蚂蚁