WeChat Development Public Platformのカスタムメニューでは、達成するために認定される必要があります。お金を使いたくない場合は、テストアカウントでのみ遊ぶことができますが、これは開発には影響しません。私の開発は、教師Liu FengのWechat Public Platformのアプリケーション開発に基づいています。
パブリックプラットフォームを使用してアカウントをテストする限り、カスタムメニューを作成できます。もっと便利です。テストアカウントには多くのインターフェイスがあり、非常に便利です。
カスタムメニューを開発するときは、WeChat Public Platform Developerドキュメントのカスタムメニューを参照して作成できます。
1.メニューをカスタマイズします
1.カスタムメニューには、最大3つの第1レベルのメニューが含まれており、各第1レベルのメニューには最大5つのセカンドレベルのメニューが含まれています。
2.第1レベルのメニューには最大4匹の漢字があり、セカンドレベルのメニューには最大7匹の漢字があります。余分な部品は「...」に置き換えられます。
3.カスタムメニューを作成した後、メニューの更新戦略は、ユーザーが公式アカウントセッションページまたは公式アカウントプロファイルページを入力すると、メニューをプルする最後のリクエストが5分前であることがわかった場合、メニューをプルすることです。メニューが更新されると、クライアントのメニューが更新されます。テスト中、パブリックアカウントを解除して再度フォローしてから、
作成後に効果を見ることができます。
カスタムメニューインターフェイスは、次のように、複数のタイプのボタンを実装できます。
1.クリック:クリックしてイベントを押します
ユーザーがクリックタイプボタンをクリックすると、WeChatサーバーはメッセージインターフェイスを介してメッセージタイプイベントの構造を開発者にプッシュし(メッセージインターフェイスガイドを参照)、ボタンに開発者が埋め尽くします。開発者は、カスタマイズされたキー値を介してユーザーと対話できます。
2。ビュー:ジャンプURL
ユーザーが[タイプ]ボタンをクリックすると、WeChatクライアントはボタン内の開発者が入力したWebページのURLを開きます。これをWebページ認証と組み合わせて、ユーザーの基本情報インターフェイスを取得してユーザーの基本情報を取得します。
3。SCANCODE_PUSH:イベントをプッシュするコードをスキャンします
ユーザーがボタンをクリックすると、WECHATクライアントはスキャンツールを呼び出し、スキャン操作を完了した後にスキャン結果を表示します(URLの場合、URLに入ります)、スキャン結果は開発者に渡され、開発者はメッセージを送信できます。
4。scancode_waitmsg:イベントをプッシュするコードをスキャンし、「メッセージ受信」プロンプトボックスがポップアップします
ユーザーがボタンをクリックすると、WeChatクライアントがスキャンツールを呼び出します。スキャンコード操作を完了したら、スキャンコードの結果を開発者に渡します。同時に、スキャンツールが閉じられ、「メッセージ受信」プロンプトボックスがポップアップし、開発者から送信されたメッセージが受信される場合があります。
5。pic_sysphoto:写真を撮って写真を投稿するポップアップシステム
ユーザーがボタンをクリックすると、WeChatクライアントがシステムカメラを調整します。写真操作を完了した後、キャプチャされた写真を開発者に送信し、イベントを開発者にプッシュします。同時に、システムカメラを保持し、開発者から送信されたメッセージを受信します。
6。pic_photo_or_album:アルバムに写真を撮ったり写真を投稿したりする
ユーザーがボタンをクリックすると、WeChatクライアントがセレクターをポップアップして、ユーザーが「写真を撮る」または「携帯電話アルバムから選択」を選択します。ユーザーが選択した後、彼は他の2つのプロセスを通過します。
7。PIC_WEIXIN:ポップアップWECHATフォトアルバム送信者
ユーザーがボタンをクリックすると、WeChatクライアントがWeChatアルバムを調整します。選択操作を完了すると、選択した写真を開発者のサーバーに送信し、イベントを開発者にプッシュします。同時に、アルバムは閉じられます。次に、開発者からメッセージを受信できます。
8。Location_Select:ポップアップジオロケーションセレクター
ユーザーがボタンをクリックすると、WeChatクライアントがジオロケーション選択ツールを呼び出します。選択操作を完了した後、選択した地理的場所を開発者のサーバーに送信し、同時にロケーション選択ツールを閉じてから、開発者から送信されたメッセージを受信します。
9。Media_id:メッセージを送信します(テキストメッセージを除く)
ユーザーがMedia_IDタイプボタンをクリックすると、WeChatサーバーは、開発者がユーザーに記入した永続的な素材IDに対応する素材を送信します。永続的な素材の種類は、写真、オーディオ、ビデオ、グラフィックメッセージです。注:永久資料IDは、「材料管理/永続的な材料の追加」インターフェイスをアップロードした後に取得した法的IDでなければなりません。
10。View_Limited:テキストメッセージのURLにジャンプ
ユーザーがView_limitedタイプボタンをクリックすると、WeChatクライアントは、ボタン内の開発者が記入した永続的なマテリアルIDに対応するグラフィックメッセージURLを開きます。永続的な材料タイプは、グラフィックメッセージのみをサポートします。注:恒久的な資料IDは、「マテリアル管理/永久材料の追加」インターフェイスをアップロードした後に取得した法的IDでなければなりません
2。カスタムメニューインターフェイスにアクセスします
1:Access_Tokenを取得します
カスタムメニューの作成、クエリ、削除には、パブリックプラットフォームに開いているカスタムメニューインターフェイスを呼び出す必要があります。このインターフェイスを呼び出すには、Access_Token(インターフェイスアクセス資格情報)を取得する必要があります。これらのインターフェイスはすべてHTTPSプロトコルに基づいているため、最初にJavaプログラムでHTTPSリクエストを送信する方法の問題を解決する必要があります。
インターフェイスアクセス資格情報を取得するaccess_token:
get access_tokenにはget:
https://api.weixin.qc.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appsecret
リンクには、grant_type、appid、secretの3つのパラメーターがあります。図のパラメーターの説明によれば、grant_typeは固定値client_credentialに渡され、appidとsecretはカスタムメニューを申請した後、WeChatによって割り当てられます。
リクエストが正常に送信された後、WeChatサーバーはAccess_TokenやExpires_inを含むJSON文字列を返します。その中で、Access_Tokenは最終的に必要な資格情報であり、有効期限は資格情報の有効期間であり、ユニットは秒、7200秒は2時間です。これは、特別なインターフェイスにアクセスするたびにアクセスを再取得する必要があるわけではなく、Access_Tokenがまだ有効期間内にある限り使用できることを意味します。
2:メニュー作成
メニューを作成するには、メニューインターフェイスを呼び出します
インターフェイスコールリクエストの説明
httpリクエスト方法:投稿(httpsプロトコルを使用してください)https://api.weixin.qq.com/cgi-bin/menu/create?access_token=access_token
実際、https://api.weixin.qqq.com/cgi-bin/menu/create?access_token = access_tokenにhttps://api.weixin.qqq.com/cgi-bin/menu/createにjsonメニュー文字列を投稿することです。
3。一般的な要求方法(カスタムトラストマネージャー)をカプセル化する
メニューを作成するために、1つはAccess_Tokenインターフェイスを取得することであり、もう1つはメニューインターフェイスをカスタマイズすることです。どちらもHTTPSリクエストです。
1:証明書トラストマネージャーを作成します
HTTPSリクエストには、証明書トラストマネージャーが必要です。このマネージャークラスは単独で定義する必要がありますが、X509TrustManagerインターフェイスを実装する必要があります。コードは次のとおりです。
パッケージorg.liufeng.weixin.util; java.security.cert.certificateExceptionをインポートします。 java.security.cert.x509certificateをインポートします。 javax.net.ssl.x509trustmanagerをインポートします。 / ** *証明書トラストマネージャー(HTTPSリクエスト用) * * @Author liufeng * @date 2013-08-08 */ public class myx509trustmanagerはx509trustmanager {public void checkclientrusted(x509certificate []チェーン、String authtype)Strowsexceptecceptecceptecceptecceptecceptecceptecceptecceptecceptecceptecceptecceptecceptecectip CheckServerTrusted(x509Certificate [] Chain、String authtype)Strows cermostexception {} public x509Certificate [] getCepteDissuers(){return null; }}証明書マネージャーの機能は、指定されたすべての証明書を信頼することです。
2:ユニバーサルHTTPSリクエストを作成します
ユニバーサルHTTPSリクエストは必要です
1)HTTPSリクエストをサポートします。
2)サポート取得と投稿。
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.loggeractoryをインポートします。 / ** *パブリックプラットフォーム一般インターフェイスツールクラス * * @author liuyq * @date 2013-08-09 */ public class weixinutil {private static logger log = loggerfactory.getlogger(weixinutil.class); / **** httpsリクエストを開始して結果を取得*** @param requesturl requestアドレス* @param requestmethod request method(get、post)* @param outputstr送信データ* @return jsonobject(jsonobject.get(key)を介してjsonオブジェクトの属性値を取得) jsonobject 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.openconnection(); httpurlconn.setsslsocketFactory(SSF); httpurlconn.setDooutput(true); httpurlconn.setDoinput(true); httpurlconn.setusecaches(false); // request method(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);文字列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 server接続のタイミングを出す。"); } catch(例外e){log.error( "https要求エラー:{}"、e); } jsonobjectを返します。 }} 4。メニューエンティティクラスをカプセル化します
1:ボタンの分類
通常、カスタムメニュー項目をボタンと見なし、ボタンの種類はクリック(クリックイベント)と表示(Webページにアクセス)に分割されます。
クリックタイプのボタンには、タイプ、名前、キーの3つの属性がありますが、ビュータイプのボタンには3つの属性があります:タイプ、名前、URL
2:最初に、Access資格情報インターフェイスを呼び出した後、WECHATサーバーはJSON形式でデータを返します。 AccessTokenオブジェクトとしてカプセル化します。オブジェクトには2つの属性があります。TokenとExpiresin、コードは次のとおりです。
パッケージorg.liufeng.weixin.pojo; / ** * wechatユニバーサルインターフェイス資格情報 * * @author liufeng * @date 2013-08-08 */ public class AccessToken {//取得した資格情報プライベート文字列トークン。 //資格情報の有効期間、ユニット:秒のプライベートInt expiresin; public string gettoken(){return token; } public void setoken(String Token){this.token = token; } public int getExpiresin(){return expiresin; } public void setexpiresin(int expiresin){this.expiresin = expiresin; }}次はメニュー構造のカプセル化です。オブジェクト指向のプログラミングを使用するため、多くのJSONデータをプログラムコードに綴るのではなく、最終的に送信されたJSON形式のメニューデータはオブジェクトから直接変換する必要があります。メニュー構造のカプセル化は、以下に示すように、パブリックプラットフォームAPIドキュメントに記載されているJSON形式のメニュー構造に基づいています。
クリックと表示のリクエストの例
{"button":[{"type": "click"、 "name": "Today's Song"、 "key": "v1001_today_music"}、{"name": "menu"、 "sub_button":[{"type": "view"、 "name": "search"、 "" "Type": "View"、 "name": "video"、 "url": "http://v.qq.com/"}、{"type": "click"、 "name": "like us"、 "key"}]}}} 3:カプセル化メニュー構造
各ボタンオブジェクトには共通名属性が必要なため、ボタンオブジェクトベースのクラスを定義する必要があり、すべてのボタンオブジェクトをこのクラスを継承する必要があります。基本クラスのコードは次のとおりです。
パッケージorg.liufeng.weixin.pojo; / ** *ボタンのベースクラス * * @author liufeng * @date 2013-08-08 */ public class button {private string name; public string getName(){return name; } public void setName(string name){this.name = name; }}次は、サブメニューアイテムのカプセル化です。サブメニューは次のようにここで定義されています。サブメニューのないメニュー項目は、セカンダリメニュー項目、またはセカンダリメニューを含まないプライマリメニューである場合があります。このタイプのサブメニューアイテムには、タイプ、名前、キーの3つの属性が含まれている必要があります。カプセル化されたコードは次のとおりです。
パッケージorg.liufeng.weixin.pojo; / ** * Normal Button(subbutton) * * @author liufeng * @date 2013-08-08 */ public class commonbutton extends button {private string type;プライベート文字列キー。 public string getType(){return type; } public void setType(string type){this.type = type; } public string getKey(){return key; } public void setKey(string key){this.key = key; }}親メニュー項目の定義:セカンダリメニュー項目を含む第1レベルのメニュー。このタイプのメニュー項目には、名前とsub_button、およびsub_buttonの2つのプロパティが含まれています。サブメニューアイテムの配列です。親メニュー項目のカプセル化コードは次のとおりです。
パッケージorg.liufeng.weixin.pojo; / ** * complex button(親ボタン) * * @author liufeng * @date 2013-08-08 */ public class complexbutton extends button {private button [] sub_button; public 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 */ public class menu {private button [] button; public button [] getButton(){return button; } public void setButton(ボタン[]ボタン){this.button = button; }}このようにして、メニューエンティティクラスのカプセル化を完了します。
資格情報Access_Tokenを取得する方法
以前のユニバーサルリクエストメソッドのクラスWeixinutil.javaに次のコードをクラスに追加して、インターフェイスアクセス資格情報を取得します。
// Access_Tokenのインターフェイスアドレスを取得します(GET)200回に制限されていますパブリック最終的な静的文字列Access_TOKEN_URL = "https://api.weixin.qqc.com/cgi-bin/token?grant_type=client_credentional&appid=appid&secret = appsret"; / ** *アクセスをGet Access_Token * * @param Appid資格情報 * @Param AppSecret Key * @return */ public Static AccessToken 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( "expires_in")); } catch(jsonexception e){AccessToken = null; // token log.errorを取得できませんでした( "token errcode:{} errmsg:{}"、jsonobject.getint( "errcode")、jsonobject.getString( "errmsg")); }} runter accesstoken; }カスタムメニューを作成する方法
以前のユニバーサルリクエストメソッドのクラスに次のコードをクラスに追加し続けて、カスタムメニューを作成します。
//メニューの作成(投稿)100回に制限されたパブリック静的文字列menu_create_url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=access_token"; / ***メニューの作成** @paramメニューメニューの例//作成メニューのurlを組み立てましたstring string url = menu_create_url.replace( "Access_token"、AccessToken); //メニューオブジェクトをJSON文字列JSONMENU = jsonObject.fromObject(menu).toString()に変換します。 //インターフェイスを呼び出してメニューjsonobject jsonobject = httprequest(url、 "post"、jsonmenu); if(null!= jsonobject){if(0!= jsonobject.getint( "errcode")){result = jsonobject.getint( "errcode"); log.Error( "メニューの作成障害errcode:{} errmsg:{}"、jsonobject.getint( "errcode")、jsonobject.getString( "errmsg")); }} return result; }カプセル化されたメソッドを呼び出して、カスタムメニューを作成します
パッケージorg.liufeng.weixin.main; org.liufeng.weixin.pojo.accestokenをインポートします。 Import 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.loggeractoryをインポートします。 / ** *メニューマネージャークラス * * @author liufeng * @date 2013-08-08 */ public class menumanager {private static logger log = loggerfactory.getlogger(menumanager.class); public static void main(string [] args){//サードパーティユーザー一意の資格情報string appid = "00000000000000000"; //サードパーティユーザー一意の資格情報キー文字列appsecret = "00000000000000000000000000000000000"; //インターフェイスを呼び出してアクセスを取得しますaccessToken at = weixinutil.getaccestoken(appid、appsecret); if(null!= at){//インターフェイスを呼び出してメニューを作成しますint result = weixinutil.createmenu(getMenu()、at.getoken()); //(0 == result)log.info( "メニュー作成の成功!"); else log.info( "メニュー作成に失敗し、エラーコード:" + result); }} / ** *メニューデータのアセンブル * * @return * / private staticメニューgetmenu(){commonbutton btn11 = new commonbutton(); btn11.setname( "天気予報"); btn11.settype( "click"); 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( "Song on Demand"); btn21.settype( "click"); btn21.setkey( "21"); commonbutton btn22 = new commonbutton(); btn22.setname( "Classic Game"); btn22.settype( "click"); btn22.setkey( "22"); commonbutton btn23 = new commonbutton(); btn23.setname( "Beautiful Radio"); btn23.settype( "click"); btn23.setkey( "23"); commonbutton btn24 = new commonbutton(); btn24.setname( "Face認識"); 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( "click"); btn31.setkey( "31"); commonbutton btn32 = new commonbutton(); btn32.setname( "ムービーランキング"); btn32.settype( "click"); btn32.setkey( "32"); commonbutton btn33 = new commonbutton(); btn33.setname( "umolous Joker"); btn33.settype( "click"); btn33.setkey( "33"); complexButton mainbtn1 = new ComplexButton(); mainbtn1.setName( "Life Assistant"); mainbtn1.setsub_button(new commonbutton [] {btn11、btn12、btn13、btn14}); complexButton mainbtn2 = new ComplexButton(); mainbtn2.setname( "ラッキーステーション"); mainbtn2.setsub_button(new commonbutton [] {btn21、btn22、btn23、btn24、btn25}); complexButton mainbtn3 = new ComplexButton(); mainbtn3.setname( "more experience"); mainbtn3.setsub_button(new commonbutton [] {btn31、btn32、btn33}); /***これは、公式アカウントXiaoqrobotの現在のメニュー構造です。各第1レベルのメニューには、第2レベルのメニュー項目があります * *特定の第1レベルのメニューの下にセカンドレベルのメニューがない場合、メニューはどのように定義する必要がありますか? *たとえば、3番目のレベル1メニュー項目は「エクスペリエンス」ではなく、直接「ユーモアジョーク」です。メニューは次のように定義する必要があります。 */メニューメニュー= new Menu(); menu.setButton(new Button [] {mainbtn1、mainbtn2、mainbtn3});メニューを返します。 }}注:上記のコードを実行するときは、AppIDとAppSecretを独自の公式アカウントに置き換える必要があります。
メニュークリックイベントへの応答
パッケージorg.liufeng.course.service; Import Java.util.date; java.util.mapをインポートします。 javax.servlet.http.httpservletrequestをインポートします。 Import org.liufeng.course.message.resp.textmessage; Import org.liufeng.course.util.messageutil; / ** *コアサービスクラス * * @author liufeng * @date 2013-05-20 */ public class coreService {/ ** *プロセス要求wechat * * @param request */ public static string processRequest(httpservletRequest request){string rescmessage = nulr; try {//デフォルトで返されるテキストメッセージコンテンツstring respcontent = "リクエスト処理の例外、試してください!"; // xml要求マップ<文字列、文字列> requestmap = messageutil.parsexml(request); // senderアカウント(open_id)string fromusername = requestmap.get( "fromusername"); //パブリックアカウント文字列toushername = requestmap.get( "tousername"); //メッセージタイプ文字列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(messagutil.req_message_text)){respcontent = "テキストメッセージを送信しています!"; } //画像メッセージelse if(msgtype.equals(messagutil.req_message_type_image)){respcontent = "画像メッセージを送信しています!"; } // Geographic Location Message else if(msgtype.equals(messagutil.req_message_type_location)){respcontent = "地理的な場所メッセージを送信しています!"; } // link message else if(msgtype.equals(messagutil.req_message_type_link)){respcontent = "link message!"; } // audio message else if(msgtype.equals(messagutil.req_message_type_voice)){respcontent = "オーディオメッセージを送信しています!"; } //イベントプッシュelse if(msgtype.equals(messageutil.req_message_type_event)){// event type string eventtype = requestmap.get( "event"); // subscribe if(eventType.equals(messagutil.event_type_subscribe)){respcontent = "ありがとうございます!"; } // unsubscribe else if(eventtype.equals(messageutil.event_type_unsubscribe)){// doto unsubscribeの後、ユーザーは公式アカウントで送信されたメッセージを受信できないため、メッセージに返信する必要はありません} //カスタムメニュークリックイベントカスタムメニュー文字列eventKey = requestMap.get( "EventKey")を作成するときに指定されたキー値; if(eventKey.equals( "11")){respcontent = "天気予報メニュー項目がクリックされます!"; } else if(eventKey.equals( "12")){respcontent = "バスクエリメニュー項目がクリックされます!"; } else if(eventKey.equals( "13")){respcontent = "周辺検索メニュー項目がクリックされます!"; } else if(eventKey.equals( "14")){respcontent = "歴史のメニュー項目がクリックされました!"; } else if(eventKey.equals( "21")){respcontent = "on song ondemandメニュー項目がクリックされます!"; } else if(eventKey.equals( "22")){respcontent = "クラシックゲームメニュー項目がクリックされます!"; } else if(eventKey.equals( "23")){respcontent = "ビューティーラジオメニュー項目がクリックされました!"; } else if(eventKey.equals( "24")){respcontent = "フェイス認識メニュー項目がクリックされます!"; } else if(eventKey.equals( "25")){respcontent = "チャットメニュー項目がクリックされます!"; } else if(eventKey.equals( "31")){respcontent = "qサークルメニュー項目がクリックされました!"; } else if(eventKey.equals( "32")){respcontent = "映画のランキングメニュー項目がクリックされます!"; } else if(eventKey.equals( "33")){respcontent = "ユーモアジョークメニュー項目がクリックされます!"; }}} textMessage.setContent(respcontent); respmessage = messageutil.textmessagetoxml(textmessage); } catch(Exception e){e.printstacktrace(); } repmessageを返します。 }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。