Smack APIを使用してGoogleトーククライアントを作成しています。今私はこれのためにリクエストを追加する必要があります。 サブスクリプションモードを手動&に設定しました。現在、プレゼンスパケット用のリスナーを登録する必要がありますが、どのようにすればよいのですか。 どの身体の助けもできますか?smack APIでリクエストを追加する方法
答えて
まだ試したことはありませんが、以下のように動作するはずです。手動モードを使用する場合は、タイプがPresence.Type.subscribe
のプレゼンスパケットをリッスンするPacketListenerを登録する必要があります。
まず名簿を設定します。
Roster roster = connection.getRoster();
roster.setSubscriptionMode(Roster.SubscriptionMode.manual);
は、次に上記の接続、例えばにパケットのリスナーを追加します。
connection.addPacketListener(new SubscriptionListener(), new PacketFilter(){
public boolean accept(Packet packet) {
if(packet instanceof Presence)
if(((Presence)packet).getType().equals(Presence.Type.subscribe))
return true;
return false;
}});
上記のコードは、ちょうどすべての要求に対してtrueを返す、しかし、あなたはそれをカスタマイズすることができますすなわち、ユーザーのGUI入力に基づいて真または偽に設定します。
public static void admitFriendsRequest() {
connection.getRoster().setSubscriptionMode(
Roster.SubscriptionMode.manual);
connection.addPacketListener(new PacketListener() {
public void processPacket(Packet paramPacket) {
System.out.println("\n\n");
if (paramPacket instanceof Presence) {
Presence presence = (Presence) paramPacket;
String email = presence.getFrom();
System.out.println("chat invite status changed by user: : "
+ email + " calling listner");
System.out.println("presence: " + presence.getFrom()
+ "; type: " + presence.getType() + "; to: "
+ presence.getTo() + "; " + presence.toXML());
Roster roster = connection.getRoster();
for (RosterEntry rosterEntry : roster.getEntries()) {
System.out.println("jid: " + rosterEntry.getUser()
+ "; type: " + rosterEntry.getType()
+ "; status: " + rosterEntry.getStatus());
}
System.out.println("\n\n\n");
if (presence.getType().equals(Presence.Type.subscribe)) {
Presence newp = new Presence(Presence.Type.subscribed);
newp.setMode(Presence.Mode.available);
newp.setPriority(24);
newp.setTo(presence.getFrom());
connection.sendPacket(newp);
Presence subscription = new Presence(
Presence.Type.subscribe);
subscription.setTo(presence.getFrom());
connection.sendPacket(subscription);
} else if (presence.getType().equals(
Presence.Type.unsubscribe)) {
Presence newp = new Presence(Presence.Type.unsubscribed);
newp.setMode(Presence.Mode.available);
newp.setPriority(24);
newp.setTo(presence.getFrom());
connection.sendPacket(newp);
}
}
}
}, new PacketFilter() {
public boolean accept(Packet packet) {
if (packet instanceof Presence) {
Presence presence = (Presence) packet;
if (presence.getType().equals(Presence.Type.subscribed)
|| presence.getType().equals(
Presence.Type.subscribe)
|| presence.getType().equals(
Presence.Type.unsubscribed)
|| presence.getType().equals(
Presence.Type.unsubscribe)) {
return true;
}
}
return false;
}
});
connection.getRoster().addRosterListener(new RosterListener() {
public void presenceChanged(Presence presence) {
System.out.println(presence.getFrom() + "presenceChanged");
}
public void entriesUpdated(Collection<String> presence) {
System.out.println("entriesUpdated");
}
public void entriesDeleted(Collection<String> presence) {
System.out.println("entriesDeleted");
}
public void entriesAdded(Collection<String> presence) {
System.out.println("entriesAdded");
}
});
}
あなたのコード・ダンプのサポートの説明/コメントは、これをもっと便利な答えにします。 –
コメントを付けるのは便利ですが、私はこのコードが非常に役に立ちました。それは明らかに書かれているので、コメントが必要な場合もあります。 –
私は同意する:公式スティックチュートリアル(http://www.igniterealtime.org/builds/smack/docs/latest/documentation/index.html =>ロスタ/プレゼンストピックと着信パケットトピック)を読んだ後、与えられた上記のコードは非常に便利になります。 – loloof64
- 1. Smackでejabberdに新しいユーザーを追加するandroid api
- 2. Railsアプリ - API取得リクエストでクエリパラメータを追加する方法は?
- 3. Android + Smack + XMPPでチャットバブルに「好き」の反応を追加する方法
- 4. Smack APIのボイス/ビデオチャットの使用方法
- 5. Aws Apiゲートウェイインテグレーションリクエストボディをリクエストするためにプロパティを追加する方法は?
- 6. Smack API、メッセージ処理後にChatBoxを更新する方法
- 7. openfireユーザーのsmack apiにユーザーアバターを設定する方法
- 8. SOAPでリクエストするXML属性を追加する方法は?
- 9. セーラーバーゲンファインダーの残りのAPIリクエストに割引コードを追加する方法
- 10. バイナリ添付ファイルをebay tradin API UploadSiteHostedPicturesリクエストに追加する方法
- 11. Smack APIクライアントからejabberdのメッセージで追加のパラメータを送信したい
- 12. XMPP(SMACK)でMUCにメンバーを追加する
- 13. Extjs 4でajaxリクエストにbeforerequestイベントを追加する方法は?
- 14. リストモデルでLINQリクエストを追加する方法
- 15. Alamofire/Swift - リクエストでブール値を追加する方法
- 16. ピカソのリクエスト作成者をプログラムで追加する方法
- 17. データパワーでjsonのリクエストとレスポンスにヘッダーを追加する方法
- 18. AFHTTPSessionManagerリクエストでrawボディを追加する方法は?
- 19. PHPでSOAPリクエストにセキュリティヘッダを追加する方法Zend
- 20. jax-wsリクエストでセキュリティヘッダーを追加する方法
- 21. RESTリクエストで地図を追加する適切な方法
- 22. このリクエストでContent-Type application/jsonを追加する方法
- 23. Smack API - ループリストjxTaskpaneを展開して崩壊させる方法
- 24. Smack APIの問題
- 25. Azure Active Directory - グラフAPIリクエスト追加フィールド
- 26. サードパーティAPIからコードをプルする追加のフィールドマッピングを追加する方法
- 27. カスタムヘッダーを追加してhtmlページをリクエストする方法は?
- 28. Facebookのテストユーザーにリクエストを追加する方法
- 29. 各コントローラの各リクエストにトークンを追加する方法 - 角度
- 30. Pythonリクエスト、マルチパート/フォームデータリクエストにコンテンツタイプを追加する方法
クラスSubscriptionListenerが見つからないため、私は投票しました。 – Magmatic
新しいSubscriptionListener()は、リスナーの例です。独自のリスナ実装を提供することは明らかです。 –