Пользовательское меню общественной платформы WeChat Development требует сертификации денег для достижения. Если вы не хотите тратить деньги, вы можете играть только с тестовым счетом, но это не влияет на развитие. Моя разработка основана на разработке приложений учителя Лю Фэн, общедоступной платформы WeChat.
Пока мы используем общедоступную платформу для тестирования учетной записи, мы можем разработать пользовательское меню. Это удобнее. Тестовая учетная запись имеет много интерфейсов, что очень удобно.
При разработке пользовательского меню вы можете обратиться к пользовательскому меню в документации по разработчику общественной платформы WeChat, чтобы создать его.
1. Настройте меню
1. Пользовательские меню включают до 3 меню первого уровня, и каждое меню первого уровня содержит до 5 меню второго уровня.
2. В меню первого уровня до 4 китайских иерогликов, а в меню второго уровня до 7 китайских иерогликов. Дополнительные детали будут заменены на "...".
3. После создания пользовательского меню стратегия обновления меню заключается в том, что когда пользователь входит на официальную страницу сеанса учетной записи или на официальной странице профиля учетной записи, если он обнаружит, что последний запрос на вытягивание меню составила 5 минут назад, он вытащит меню. Если меню обновлено, меню клиента будет обновлено. Во время теста вы можете попытаться отменить публичный аккаунт и следить за ним снова, затем
Вы можете увидеть эффект после создания.
Интерфейс пользовательского меню может реализовать несколько типов кнопок, следующим образом:
1. Нажмите: нажмите, чтобы нажать событие
После того, как пользователь нажимает кнопку «Нажмите тип», сервер WeChat нажимает структуру события типа сообщения для разработчика через интерфейс сообщения (см. Руководство по интерфейсу сообщения) и принесет значение ключа, заполненное разработчиком в кнопке. Разработчик может взаимодействовать с пользователем через индивидуальное значение ключа;
2. Просмотр: Jump URL
После того, как пользователь нажимает кнопку «Просмотр типа», клиент WeChat откроет URL -адрес веб -страницы, заполненный разработчиком в кнопке, который можно объединить с авторизацией веб -страницы для получения интерфейса базовой информации пользователя для получения базовой информации пользователя.
3. scancode_push: код сканирования, чтобы натолкнуть событие
После того, как пользователь нажимает кнопку, клиент WeChat вызовет инструмент сканирования и отобразит результат сканирования после завершения операции сканирования (если это URL -адрес, он введет URL), и результат сканирования будет передан разработчику, и разработчик может отправить сообщение.
4. Scancode_waitmsg: сканируйте код, чтобы натолкнуть событие, и появляется поле «Приглашение« Приема сообщения »
После того, как пользователь нажимает кнопку, клиент WeChat вызовет инструмент сканирования. После завершения операции кода сканирования передайте результат кода сканирования разработчику. В то же время, инструмент сканирования закрыт, и появляется поле «Получение сообщения», а затем может быть получено сообщение, отправленное разработчиком.
5. pic_sysphoto: всплывающая система для фотографирования и публикации фотографий
После того, как пользователь нажимает кнопку, клиент WeChat настраивает системную камеру. После завершения фото операции он отправит запечатленные фотографии разработчику и подтолкнуть событие разработчику. В то же время он будет держать системную камеру, а затем получить сообщение, отправленное разработчиком.
6. PIC_PHOTO_OR_ALBUM: всплыть и делать фотографии или публиковать фотографии на альбоме
После того, как пользователь нажимает кнопку, клиент WeChat появит селектор для пользователя, чтобы выбрать «Сделать фото» или «Выберите из альбома мобильного телефона». После выбора пользователя он пройдет через два других процесса.
7. PIC_WEIXIN: Pop-Up WeChat Photo Almum Sender
После того, как пользователь нажимает кнопку, клиент WeChat настраивает альбом WeChat. После завершения операции выбора она отправит выбранную фотографию на сервер разработчика и выдвинуть событие разработчику. В то же время альбом будет закрыт. Затем сообщение может быть получено от разработчика.
8. location_select: селектор геолокации всплывающего окна
После того, как пользователь нажимает кнопку, клиент WeChat вызовет инструмент выбора геолокации. После завершения операции выбора он отправит выбранное географическое местоположение на сервер разработчика и в то же время закроет инструмент выбора местоположения, а затем получит сообщение, отправленное разработчиком.
9. media_id: отправить сообщение (кроме текстового сообщения)
После того, как пользователь нажимает кнопку типа Media_id, сервер WeChat отправит материал, соответствующий постоянному идентификатору материала, заполненного разработчиком пользователю. Постоянные типы материалов могут быть изображениями, аудио, видео и графическими сообщениями. Обратите внимание: постоянный идентификатор материала должен быть законным идентификатором, полученным после загрузки интерфейса «Управление материалами/добавить постоянный материал».
10. view_limited: перейдите на URL -адрес текстового сообщения
После того, как пользователь нажимает кнопку типа View_Limited, клиент WeChat откроет URL -адрес графического сообщения, соответствующий постоянному идентификатору материала, заполненного разработчиком в кнопке. Постоянный тип материала поддерживает только графическое сообщение. Обратите внимание: постоянный идентификатор материала должен быть законным идентификатором, полученным после загрузки интерфейса «Управление материалами/добавить постоянный материал»
2. Доступ к интерфейсу пользовательского меню
1: получить Access_token
Создание, запрос и удаление пользовательских меню требуют вызова пользовательского интерфейса меню, открытого для общедоступной платформы. Чтобы вызвать этот интерфейс, вам необходимо получить Access_token (учетные данные доступа к интерфейсу). Все эти интерфейсы основаны на протоколе HTTPS, поэтому нам нужно сначала решить проблему того, как отправлять запросы HTTPS в программах Java.
Получить учетные данные доступа к интерфейсу Access_token:
Получение Access_token доступно через Get:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appsecret
В ссылке есть три параметра, а именно Grant_type, Appid и Secret. Согласно описанию параметра на рисунке, Grant_type передает фиксированное значение client_credential, и Appid и Secret назначаются нам WeChat после подачи заявки на пользовательское меню.
После того, как запрос будет успешно отправлен, сервер WeChat вернет строку JSON, включая Access_token и Expires_in. Среди них Access_token - это учетные данные, которые нам нужны в конце, и истекает_ин - период достоверности учетных данных, единица составляет секунды, а 7200 секунд - 2 часа. Это означает, что не каждый раз, когда вы получаете доступ к специальному интерфейсу, вам необходимо повторно приобретать access_token, и его можно использовать до тех пор, пока Access_token все еще находится в период достоверности.
2: Создание меню
Чтобы создать меню, позвоните в интерфейс меню
Описание запроса на звонок интерфейса
Метод запроса http: post (пожалуйста, используйте протокол https) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=access_token
На самом деле, он должен отправить строку меню JSON в сообщении в адрес https://api.weixin.qq.com/cgi-bin/menu/create?access_token=access_token.
3. Инкапсулируйте общий метод запроса (Custom Trust Manager)
Чтобы создать меню, одно состоит в том, чтобы получить интерфейс access_token, а другой - настраивать интерфейс меню, оба являются запросами HTTPS.
1: Создайте сертификат Trust Manager
Для запросов HTTPS нам нужен сертификат Trust Manager. Этот класс менеджера должен быть определен сам по себе, но ему необходимо реализовать интерфейс X509TrustManager. Код заключается в следующем:
пакет org.liufeng.weixin.util; Импорт java.security.cert.certificateException; Импорт java.security.cert.x509Certificate; Импорт javax.net.ssl.x509trustmanager; / ** * Сертификат Trust Manager (для запросов https) * * @author liufeng * @date 2013-08-08 */ public class myx509trustmanager реализует x509trustmanager {public void checkclientTrusted CheckServerTrusted (x509Certificate [] chain, String authtype) бросает сертификацию {} public x509certificate [] getAcceptEdissuers () {return null; }} Функция менеджера по сертификатам состоит в том, чтобы доверять всем указанным сертификатам.
2: создать универсальный запрос HTTPS
Универсальный HTTPS -запрос должен
1) поддержать запросы HTTPS;
2) Поддержка Get and Post;
3) поддержание параметров, а также не поддерживать параметры;
пакет org.liufeng.weixin.util; Импорт java.io.bufferedReader; импортировать java.io.inputstream; Импорт java.io.inputStreamReader; импортировать java.io.outputstream; импортировать java.net.connectexception; импортировать java.net.url; Импорт javax.net.ssl.httpsurlConnection; импортировать javax.net.ssl.sslcontext; импортировать javax.net.ssl.sslsocketfactory; Импорт javax.net.ssl.trustmanager; Импорт net.sf.json.jsonobject; Импорт org.slf4j.logger; Импорт org.slf4j.loggerfactory; / ** * Общедоступная платформа общего интерфейса класс * * * @author liuyq * @date 2013-08-09 */ public class weixinutil {private static logger = loggerfactory.getlogger (weixinutil.class); / *** Инициировать запрос https и получить результат*** @param requestUrl Adderl Addrec* @param requestMethod Метод запроса (get, post)* @param outputstrated data* @return jsonobject (получить значение атрибута json obj jsonObject = null; StringBuffer Buffer = new StringBuffer (); try {// Создать объект sslContext и инициализировать TrustManager [] tm = {new MyX509TrustManager ()}; Sslcontext sslcontext = sslcontext.getInstance ("ssl", "sunjsse"); sslcontext.init (null, tm, new java.security.securerandom ()); // Получить объект sslSocketFactory из вышеуказанного объекта sslContext sslSocketFactory ssf = sslContext.getSocketFactory (); Url url = new URL (requestUrl); Httpsurlconnection httpurlconn = (httpsurlconnection) url.openconcenection (); httpurlconn.setsslsocketfactory (ssf); httpurlconn.setDoOutput (true); httpurlconn.setDoinput (true); httpurlconn.setusecaches (false); // Установить метод запроса (get/post) httpurlconn.setrequestmethod (requestmethod); if ("Get". EqualsIgnoreCase (requestMethod)) httpurlconn.connect (); // Когда есть данные, которые необходимо отправить, если (null! = Outputstr) {outputStream outputStream = httpurlconn.getOutputStream (); // Обратите внимание на формат кодирования, чтобы предотвратить китайский искаженный outputStream.write (outputStr.getBytes ("UTF-8")); outputStream.close (); } // Конвертировать возвращенный входной поток в строку inputStream inputStream = httpurlconn.getInputStream (); InputStreamReader InputStreamReader = new InputStreamReader (inputStream, "UTF-8"); BufferedReader BufferedReader = new BufferedReader (inputStreamReader); String str = null; while ((str = BufferedReader.readline ())! = null) {buffer.append (str); } BufferedReader.Close (); InputStreamReader.Close (); // Выпуск ресурса inputstream.close (); inputStream = null; httpurlconn.disconnect (); jsonObject = jsonObject.fromObject (buffer.toString ()); } catch (connectException ce) {log.error ("Подключение к серверу WeIxin. } catch (Exception e) {log.Error ("https -ошибка: {}", e); } return jsonObject; }} 4. Инкапсулирование класса сущности меню
1: Классификация кнопок
Мы обычно рассматриваем пользовательские элементы меню как кнопки, а типы кнопок разделены на Click (Click Event) и View (посетите веб -страницы).
Кнопки типа щелчка имеют три атрибута: тип, имя и клавиша, в то время как кнопки типа просмотра имеют три атрибута: тип, имя и URL
2: Во -первых, после вызова интерфейса учетных данных доступа, сервер WeChat вернет данные в формате json: {"access_token": "access_token", "expires_in": 7200}. Мы инкапсулируем его как объект AccessToken. Объект имеет два атрибута: токен и истекает, код заключается в следующем:
пакет org.liufeng.weixin.pojo; / ** * Универсальный интерфейс WeChat * * * @author liufeng * @date 2013-08-08 */ public class accesstoken {// Полученные учетные данные частной строки; // Время достоверности полномочий, единица: секунды Private int истекает; public String getToken () {return token; } public void Setteken (String Token) {this.token = token; } public int getExpiresIn () {return expiresIn; } public void setExpiresIn (int oxresin) {this.expiresin = expiresin; }} Следующим является инкапсуляция структуры меню. Поскольку мы используем объектно-ориентированное программирование, данные о окончательном представленном меню формата JSON должны быть напрямую преобразованы из объекта, а не записывать много данных JSON в код программы. Инкапсуляция структуры меню основана на структуре меню формата JSON, приведенной в документе Public Platform API, как показано ниже:
Пример запроса на клик и просмотр
{«Кнопка»: [{"type": "click", "name": "сегодняшняя песня", "ключ": "v1001_today_music"}, {"name": "menu", "sub_button": [{"type": "View", "name": "search", "url": "http://ww.sosososos". «type»: «View», «name»: «видео», «URL»: «http://v.qq.com/"}, {"type": "click", "name": "как мы", "ключ": "v1001_good"}]}]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} 3: Структура меню инкапсуляции
Каждый объект кнопки нуждается в общем атрибуте имени, поэтому необходимо определить базовый класс кнопки объекта, и все объекты кнопок должны наследовать этот класс. Код базового класса выглядит следующим образом:
пакет org.liufeng.weixin.pojo; / ** * Базовый класс кнопки * * @author liufeng * @date 2013-08-08 */ кнопка открытого класса {private String name; public String getName () {return name; } public void setName (string name) {this.name = name; }} Следующим является инкапсуляция элемента подменю. Подменю определяется здесь следующим образом: пункт меню без подменю может быть вторичным пунктом меню или первичным меню, которое не содержит вторичного меню. Этот тип элемента подменю должен содержать три атрибута: тип, имя и ключ. Инкапсулированный код выглядит следующим образом:
пакет org.liufeng.weixin.pojo; / ** * Нормальная кнопка (subbutton) * * @author liufeng * @date 2013-08-08 */ public class commonbutton extends кнопка {private String Type; частный ключ строки; public String getType () {return Type; } public void settype (type string) {this.type = type; } public String getKey () {return Key; } public void setKey (String Key) {this.key = key; }} Определение меню родителей: меню первого уровня, содержащее вторичные пункты меню. Этот тип пунктов меню содержит два свойства: имя и sub_button, а Sub_button - это массив элементов подменю. Код инкапсуляции элемента меню родительского меню заключается в следующем:
пакет org.liufeng.weixin.pojo; / ** * Комплексная кнопка (родительская кнопка) * * @author liufeng * @date 2013-08-08 */ public Class Complexbuttonbutton extends кнопка {Private [] sub_button; Общественная кнопка [] getsub_button () {return sub_button; } public void setSub_button (button [] sub_button) {this.sub_button = sub_button; }} Инкапсулировать все меню. Объект меню содержит несколько пунктов меню (больше всего может быть 3). Эти пункты меню могут быть предметами подменю (меню первого уровня без вторичных меню) или пункты меню родителей (пункты меню, содержащие вторичные меню)
пакет org.liufeng.weixin.pojo; / ** * Меню * * @author liufeng * @Date 2013-08-08 */ Меню открытого класса {Private Button [] Кнопка; общедоступная кнопка [] getButton () {возврат кнопки; } public void setButton (button [] button) {this.button = button; }}Таким образом, мы завершаем инкапсуляцию класса сущности меню.
Как получить учетные данные access_token
Продолжайте добавлять следующий код в класс weixinutil.java предыдущего метода универсального запроса для получения учетных данных доступа к интерфейсу:
// Получить адрес интерфейса access_token (get), ограниченный 200 раз в день, публичная окончательная статическая строка access_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appsecret"; / ** * GET ACCESS_TOKEN * * @param Appid Aredential * @param appsecret key * @return */ public Static Accestoken getAccesstoken (String Appid, String AppSecret) {accessToken accessToken = null; String requestUrl = access_token_url.replace ("appid", appid) .replace ("appsecret", appsecret); JsonObject jsonObject = httprequest (requestUrl, "get", null); // Если запрос успешно, если (null! = JsonObject) {try {accessToken = new AccessToken (); accesstoken.settoken (jsonobject.getString ("access_token")); accesstoken.setexpiresin (jsonobject.getint ("oxires_in")); } catch (jsonexception e) {accessToken = null; // не удалось получить токен log.error ("Не удалось получить токен errcode: {} errmsg: {}", jsonobject.getint ("errcode"), jsonobject.getString ("errmsg")); }} return accessToken; } Как создать пользовательское меню
Продолжайте добавлять следующий код в класс weixinutil.java предыдущего метода универсального запроса, чтобы создать пользовательское меню:
// Создание меню (post), ограниченное 100 раз в день, публичная статическая строка Menu_create_url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=access_token"; / *** Создать меню** @param Меню Меню Пример* @param accesstoken value access_token* @return 0 означает успех, другие значения указывают на неудачу*/ public static int createmenu (меню меню, string accestoken) {int result = 0; // Соберите URL меню создания string url = menu_create_url.replace ("access_token", accesstoken); // конвертировать объект меню в json String String jsonmenu = jsonObject.FromObject (меню) .toString (); // Вызовите интерфейс, чтобы создать меню jsonObject jsonObject = httprequest (url, "post", jsonmenu); if (null! = jsonObject) {if (0! = jsonObject.getInt ("errcode")) {result = jsonObject.getInt ("errcode"); log.error ("Create Menu не удалось Errcode: {} errmsg: {}", jsonobject.getint ("errcode"), jsonobject.getString ("errmsg")); }} return result; } Вызовать инкапсулированные методы для создания пользовательских меню
пакет org.liufeng.weixin.main; Импорт org.liufeng.weixin.pojo.accesstoken; Импорт org.liufeng.weixin.pojo.button; Импорт org.liufeng.weixin.pojo.commonbutton; Импорт org.liufeng.weixin.pojo.complexbutton; Импорт org.liufeng.weixin.pojo.menu; Импорт org.liufeng.weixin.util.weixinutil; Импорт org.slf4j.logger; Импорт org.slf4j.loggerfactory; / ** * Класс менеджера меню * * @author liufeng * @date 2013-08-08 */ public class menumanager {private static logger log = loggerfactory.getlogger (menumanager.class); public static void main (String [] args) {// Сторонний пользователь уникальная строка учетных данных appid = "00000000000000000"; // Сторонний пользователь уникальный ключевой класс appsecret = "0000000000000000000000000000000000000"; // Вызовите интерфейс, чтобы получить access_token accesstoken at = weixinutil.getaccesstoken (appid, appsecret); if (null! = at) {// вызвать интерфейс, чтобы создать меню int result = weixinutil.createmenu (getMenu (), at.getToken ()); // Определите результат создания меню, если (0 == Результат) log.info ("Создание меню удалось!"); else log.info ("Создание меню не удалось, код ошибки:" + result); }} / ** * Сборные данные меню * * @return * / private static menu getmenu () {commonbutton btn11 = new commonbutton (); btn11.setname («прогноз погоды»); btn11.settype ("Щелкни"); btn11.setkey ("11"); CommonButton Btn12 = new CommonButton (); btn12.setname ("автобусный запрос"); btn12.settype ("click"); btn12.setkey ("12"); CommonButton Btn13 = new CommonButton (); btn13.setname («периферический поиск»); btn13.settype ("click"); btn13.setkey ("13"); CommonButton Btn14 = new CommonButton (); btn14.setname («Сегодня в истории»); btn14.settype ("click"); btn14.setkey ("14"); CommonButton Btn21 = new CommonButton (); btn21.setname ("Песня по требованию"); btn21.settype ("Щелкни"); btn21.setkey ("21"); CommonButton Btn22 = new CommonButton (); btn22.setname ("классическая игра"); btn22.settype ("click"); btn22.setkey ("22"); CommonButton Btn23 = new CommonButton (); btn23.setname ("красивое радио"); btn23.settype ("click"); btn23.setkey ("23"); CommonButton Btn24 = new CommonButton (); btn24.setname («распознавание лица»); btn24.settype ("click"); btn24.setkey ("24"); CommonButton Btn25 = new CommonButton (); btn25.setname ("чат"); btn25.settype ("click"); btn25.setkey ("25"); CommonButton Btn31 = new CommonButton (); btn31.setname ("Q Friends Circle"); btn31.settype ("Щелкни"); btn31.setkey ("31"); CommonButton Btn32 = new CommonButton (); btn32.setname («Рейтинг фильмов»); btn32.settype ("click"); btn32.setkey ("32"); CommonButton Btn33 = new CommonButton (); btn33.setname («юмористическая шутка»); btn33.settype ("click"); btn33.setkey ("33"); Complexbutton mainBtn1 = new ComplexButton (); mainbtn1.setname («Помощник жизни»); mainbtn1.setsub_button (new Commonbutton [] {btn11, btn12, btn13, btn14}); Complexbutton mainBtn2 = new ComplexButton (); mainbtn2.setname ("Lucky Station"); mainbtn2.setsub_button (new Commonbutton [] {btn21, btn22, btn23, btn24, btn25}); Complexbutton mainBtn3 = new Complexbutton (); mainbtn3.setname («больше опыта»); mainbtn3.setsub_button (new Commonbutton [] {btn31, btn32, btn33}); /*** Это текущая структура меню официальной учетной записи xioqrobot. Каждое меню первого уровня имеет пункт меню второго уровня * * Если в меню «Меню следует определить меню», если в меню нет меню второго уровня? * Например, пункт меню третьего уровня первого уровня не является «большим опытом», но является непосредственно «шуткой юмора», тогда меню должно быть определено таким образом: * menu.setbutton (новая кнопка [] {mainbtn1, mainbtn2, btn33}); */ Меню меню = новое меню (); menu.setbutton (новая кнопка [] {mainbtn1, mainbtn2, mainbtn3}); возвращение меню; }}Примечание. При запуске вышеуказанного кода вам необходимо заменить Appid и AppSecret на свою официальную учетную запись.
Ответ на событие MENU
пакет org.liufeng.course.service; импортировать java.util.date; импортировать java.util.map; Импорт javax.servlet.http.httpservletrequest; Импорт org.liufeng.course.message.resp.textmessage; Импорт org.liufeng.course.util.messageutil; / ** * Класс основного сервиса * * @author liufeng * @date 2013-05-20 */ public Class Coreservice {/ ** * Запросы на процесс от WeChat * * @param запрос * @return */ public Static ProcessRequest (httpservletrequest) {String respmessage = null; try {// Содержимое текстового сообщения, возвращаемое по умолчанию string respcontent = "Исключение обработки запросов, попробуйте!"; // xml -запрос карты анализа <string, string> requestMap = messageUtil.parsexml (request); // учетная запись отправителя (open_id) string fromusername = requestmap.get ("fromusername"); // Строка публичной учетной записи tousername = requestmap.get ("tousername"); // тип сообщения string msgtype = requestmap.get ("msgtype"); // Ответить на текстовое сообщение TextMessage TextMessage = new TextMessage (); TextMessage.SetTouserName (FromUsername); TextMessage.SetFromuserName (TouserName); TextMessage.SetCreatetime (new Date (). getTime ()); textmessage.setmsgtype (messageutil.resp_message_type_text); TextMessage.setFuncflag (0); // Текстовое сообщение if (msgtype.equals (messageutil.req_message_type_text)) {respcontent = "Вы отправляете текстовое сообщение!"; } // Сообщение изображения else if (msgtype.equals (messageutil.req_message_type_image)) {respcontent = "Вы отправляете сообщение изображения!"; } // Сообщение географического местоположения else if (msgtype.equals (messageutil.req_message_type_location)) {respcontent = "Вы отправляете сообщение географического местоположения!"; } // Сообщение ссылки else if (msgtype.equals (messageutil.req_message_type_link)) {respcontent = "Вы отправляете сообщение ссылки!"; } // Audio Message else if (msgtype.equals (messageutil.req_message_type_voice)) {respcontent = "Вы отправляете аудио -сообщение!"; } // событие push else if (msgtype.equals (messageutil.req_message_type_event)) {// type string string eventtype = requestmap.get ("event"); // подписаться if (eventtype.equals (messageutil.event_type_subscribe)) {respcontent = "Спасибо за внимание!"; } // unsubScribe else if (eventtype.equals (messageUtil.event_type_unsubscribe)) {// todo После отказа от подписки, пользователь не может получить сообщение, отправленное официальным учетной записью, поэтому нет необходимости отвечать на сообщение // custom menu event recement evencepe. соответствует значению ключа, указанному при создании пользовательского меню string eventKey = requestMap.get ("evenceKey"); if (evencekey.equals ("11")) {respcontent = "Прогнозируемые меню погоды нажимают!"; } else if (eventer.equals ("12")) {respcontent = "Пункт меню« Автобус запроса »был нажат!"; } else if (eventer.equals ("13")) {respcontent = "Пункт меню периферийного поиска нажимается!"; } else if (EventKey.equals ("14")) {respcontent = "Пункт меню в истории был нажат!"; } else if (EventKey.equals ("21")) {respcontent = "Песня по запросу меню нажимается!"; } else if (EventKey.equals ("22")) {respContent = "Классический меню меню нажимается!"; } else if (EventKey.equals ("23")) {respContent = "Элемент меню« красота радио »был нажат!»; } else if (eventer.equals ("24")) {respcontent = "Элемент меню распознавания лица нажимается!"; } else if (EventKey.equals ("25")) {respContent = "Пункт меню чата нажимается!"; } else if (EventKey.equals ("31")) {respContent = "Элемент меню Q Circle был нажат!"; } else if (eventer.equals ("32")) {respcontent = "Пункт меню ранжирования фильма нажимается!"; } else if (eventer.equals ("33")) {respcontent = "Меню шутки юмора нажимается!"; }}} textmessage.setContent (respcontent); respmessage = messageutil.textmessageToxml (TextMessage); } catch (Exception e) {e.printstackTrace (); } return respmessage; }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.