配置菜单按钮扫一扫

刚好这段时间都在做公众号,所有和大家讲讲怎么配置公众号菜单。一般有公众号自带的和,自定义的菜单配置

   /** 
     * 组装菜单数据 
     *  
     * @return 
     */  
    private static Menu getMenu() {  
    	//生成授权页面信息
    	
//    	String  StrURL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID"
//    			+ "&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect";// 	
//    	String strAutoURLuft8 = "";
//    	String strOpenID = MainConst.getWXAppID();
//    	String strScope = "snsapi_userinfo";//    	
//    	CommonUtil urlUti = new CommonUtil();    	
//    	String requestUrl = StrURL.replace("APPID", strOpenID).replace("REDIRECT_URI", strAutoURLuft8).replace("SCOPE", strScope);  
    	    		   	
    	
    	Button mainBtn1 = null;
    	mainBtn1 = new ViewButton();  
            ((ViewButton)mainBtn1).setName("管理员");  
            ((ViewButton)mainBtn1).setType("view");  
            ((ViewButton)mainBtn1).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_boss() + "index.html")); 
                    
            
//        Button btn21 = null;
//            	btn21= new ViewButton();  
//            	((ViewButton)btn21).setName("客房预订");  
//            	((ViewButton)btn21).setType("view"); 
//            	((ViewButton)btn21).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_pages() + "bookroom.jsp"));
            	            	
//        Button btn22 = null;
//  			btn22= new ViewButton();  
//        	((ViewButton)btn22).setName("我的房间");  
//        	((ViewButton)btn22).setType("view"); 
//        	((ViewButton)btn22).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_pages() + "myroom.jsp"));            	
    	

//       Button btn23 = null;
//       			btn23= new ViewButton();  
//            	((ViewButton)btn23).setName("我的订单");  
//            	((ViewButton)btn23).setType("view");             	
//            	((ViewButton)btn23).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_pages() + "queryOrders.jsp?nav_mode=0"));     	
        	
            	
            	
//        Button btn24 = null;
//   			btn24= new ViewButton();  
//        	((ViewButton)btn24).setName("我的分享锁");  
//        	((ViewButton)btn24).setType("view"); 
//        	((ViewButton)btn24).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_pages() + "myshare.jsp")); 
        	       	  	
                        		
            Button btn31 = null;
        	btn31= new ViewButton();  
        	((ViewButton)btn31).setName("门禁开门");  
        	((ViewButton)btn31).setType("view"); 
        	((ViewButton)btn31).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_rentclient() + "rc/index.htmlJINGHAO/keyword"));
	
        	Button btn32 = null;
  			btn32= new ViewButton();  
        	((ViewButton)btn32).setName("房间开门");  
        	((ViewButton)btn32).setType("view"); 
        	((ViewButton)btn32).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_rentclient() + "rc/index.htmlJINGHAO/keyroom"));    
        		
            
            /*   	   
            	
       Button btn33 = null;
       			btn33= new ViewButton();  
            	((ViewButton)btn33).setName("设置开门密码");  
            	((ViewButton)btn33).setType("view"); 
            	((ViewButton)btn33).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_rentclient() + "setpass.html")); 
            	            	            	
       Button btn34 = null;
       			btn34= new ViewButton();  
            	((ViewButton)btn34).setName("设置分享");  
            	((ViewButton)btn34).setType("view"); 
            	((ViewButton)btn34).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_rentclient() + "shareopen.html")); 
            	                       	
       Button btn35 = null;
       			btn35= new ViewButton();  
            	((ViewButton)btn35).setName("水电费");  
            	((ViewButton)btn35).setType("view"); 
            	((ViewButton)btn35).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_rentclient() + "feelist.html")); 
                 	
           */	
            	     
//       Button btn35 = null;
//        btn35=new CommonButton();  
//        btn35.setName("一键开门");  
//       ((CommonButton)btn35).setType("click");  
//       ((CommonButton)btn35).setKey("35");
                                
//        ComplexButton mainBtn2 = new ComplexButton();  
//        mainBtn2.setName("在线预订");  
//        mainBtn2.setSub_button(new Button[] { btn21, btn22,btn23,btn24});  
         
        ComplexButton mainBtn2 = new ComplexButton();  
        mainBtn2.setName("开门");  
//        mainBtn2.setSub_button(new Button[] { btn31, btn32, btn33, btn34,  btn35 }); 
        mainBtn2.setSub_button(new Button[] { btn31, btn32}); 
        
        Button mainBtn35 = null;
    	mainBtn35 = new ViewButton();  
            ((ViewButton)mainBtn35).setName("登录");  
            ((ViewButton)mainBtn35).setType("view");  
            ((ViewButton)mainBtn35).setUrl(OauthUtil.MycreateOauth(MainConst.getDomain_rentclient() + "rc/index.html"));
           	
      CommonButton btn34 = new CommonButton();  
       btn34.setName("扫一扫");  
      btn34.setType("scancode_push");  
      btn34.setKey("34");
      ComplexButton mainBtn3 = new ComplexButton();  
      mainBtn3.setName("用户");  
//      mainBtn2.setSub_button(new Button[] { btn31, btn32, btn33, btn34,  btn35 }); 
      mainBtn3.setSub_button(new Button[] { btn34,mainBtn35}); 
      
        /** 
         * 这是公众号xiaoqrobot目前的菜单结构,每个一级菜单都有二级菜单项<br> 
         *  
         * 在某个一级菜单下没有二级菜单的情况,menu该如何定义呢?<br> 
         * 比如,第三个一级菜单项不是“更多体验”,而直接是“幽默笑话”,那么menu应该这样定义:<br> 
         * menu.setButton(new Button[] { mainBtn1, mainBtn2, btn33 }); 
         */  
        Menu menu = new Menu();  
        menu.setButton(new Button[] { mainBtn1,  mainBtn2, mainBtn3 });  
  
        return menu;  
        
        
    } //...
    
    
    public static void initMenu(){
    	 // 调用接口获取access_token  
        	L.i("开始配置微信菜单"); 
         
            // 调用接口创建菜单  
            int result = WeixinUtil.createMenu(getMenu(), MainConst.getToken());  
  
            // 判断菜单创建结果  
            if (0 == result)  
            {                
                L.i("成功配置微信菜单.");
            }
            else  
            {            	              
                L.v("配置微信菜单失败!");
            }
      }//...
    

 上面的是创建菜单的,还有进入菜单时,我们要微信授权,所有触发菜单的页面,也要微信授权,才能拿的到openid

/**
	 * 通过Oauth获得Base信息(openID),再通过OauthServlet跳转回url
	 * @param url
	 * @return 完整url
	 */
    public static  String MycreateInfoOauth(String url){
    	return createOAuth(MainConst.getWXAppID(), urlEncodeUTF8(MainConst.getDomain_weixin()+"oauthInfo"), "snsapi_userinfo", url);
    }
    
    
	/**
	 * 通过Oauth获得Base信息(openID),再通过OauthServlet跳转回url
	 * 暂时没用 
	 * @param url
	 * @return 完整url
	 */
//    public static  String MycreateBaseOauth(String url){
//    	return createOAuth(MainConst.getWXAppID(), urlEncodeUTF8(MainConst.getDomain_weixin()+"oauth"), "snsapi_base", url);
//    }
    
    //
    /**
     * 
     * @param appID
     * 
     * @param address 要UTF-8格式过。如 urlEncodeUTF8(url)
     * 
     * @param scope snsapi_base 直接可以获取openID,不需要用户点击授权。 snsapi_userinfo 需要用户授权,可以获得用户的基本资料
     * 
     * @param state 在授权跳转后,会带上这个参数,  作为跳转URL  我们可以在自己的后台再获取它  
     * 
     * @return
     */
    public static String createOAuth(String appID,String address,String scope,String state){
    	String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appID
    			+"&redirect_uri="+address +"&response_type=code&scope=" 
    			+ scope + "&state=" +state +  "#wechat_redirect";  	
    	
    	return url;
    }//...

 

appid是微信公众号的配置appid,通过授权我们可以拿到openid

上一篇:在参数传递中,不分基本,引用数据类型。都是以值直接进行传递的。如下典型例子。


下一篇:PullTube for Mac(在线视频下载器)