私は、IM Messengerを開発するためにAndroid用のSmack XMPPクライアントを使用しています。 このシナリオのようにしたい ユーザーのログイン時に、バックグラウンドサービスでXMPPConnection参照オブジェクトを使用してPackerListenerを添付します。 xmppCon.addPacketListener(......)。このパケットリスナーは、着信要求(チャットメッセージ、サブスクリプション要求、グループチャット要求など)を聞くのに使用します。このパケット要求を取得した後では、チャットメッセージ、サブスクリプション要求などのような要求タイプを識別します。チャットメッセージと私のチャット画面が開いています私はサブスクリプションリクエストの場合、その画面を送信/更新したいですリクエストに応じて保留中のUIアクティビティ画面を更新したいので、特定のUIをサービスから更新したいと思います。 問題は、アクティビティ(アクティブなアクティビティ)をサービスからどのように更新できるかです。 誰かが私にこれを行う方法を教えてくれるのですか、これについて私により良い提案を与えることができますか? 私は非常に感謝します...XMPPパケットリスナーを使用してAndroidバックグラウンドサービスを実装する
1
A
答えて
-1
あなたのXMPP接続を駆動するサービスは、状態が変化した場合にインテントをブロードキャストできます。あなたのUIアクティビティ(またはウィジェット)は、それらのインテントに登録し、それに応じてディスプレイを更新することができます。
0
あなたは、サービスクラスを作ることができ、その後そのStartメソッドの中で、あなたはこのコードを追加することができます -
RosterListener r1 = new RosterListener() {
@Override
public void presenceChanged(Presence presence) {
// TODO Auto-generated method stub
//sending the broadcast to update the expandable list view
//to check if any person's presence has changed.
sendBroadcast(new Intent(UserMenuActivity.ACTION_UPDATE));
notification("changed");
}
@Override
public void entriesUpdated(Collection<String> arg0) {
// TODO Auto-generated method stub
//notification("entriesUpdated");
}
@Override
public void entriesDeleted(Collection<String> arg0) {
// TODO Auto-generated method stub
//notification("entriesDeleted");
}
@Override
public void entriesAdded(Collection<String> arg0) {
// TODO Auto-generated method stub
Iterator<String> it = arg0.iterator();
if (it.hasNext()) {
user = it.next();
}
/*RosterEntry entry = roster.getEntry(user);
if(entry.getType().toString().equalsIgnoreCase("to")){
int index_of_Alpha = user.indexOf("@");
String subID = user.substring(0, index_of_Alpha);
notification("Hi,"+subID+" wants to add you");
} */
}
};
if (roster != null) {
roster.setSubscriptionMode(Roster.SubscriptionMode.manual);
System.out.println("subscription going on");
roster.addRosterListener(r1);
}
} else {
showToast("Connection lost-", 0);
}
これはあなたが求めているものと同じ操作を行うことができる方法です。同じような質問があればお気軽にお問い合わせください。
関連する問題
- 1. オープンソースXMPPの実装?
- 2. androidのロケーションリスナーを使用したバックグラウンドサービス
- 3. AndroidのバックグラウンドサービスでLocationServices.FusedLocationApi.requestLocationUpdatesを使用しています... onLocationChanged never called
- 4. AndroidでWebViewを使用してJavascriptInterfaceを実装するベストプラクティス?
- 5. アカウントマネージャーを使用してAndroidでJWT認証を実装する
- 6. カスタムScrollViewクラスを使用してインターフェイスを実装する - Android
- 7. AndroidでPageViewerを使用してカルーセルを実装する
- 8. XMPPでのスタンザの実装
- 9. foldlを使用して実装する
- 10. Android - pinchを実装してrecylerviewを実装する方法
- 11. チャットアプリAndroidでejabberd 16とXMPPを使用
- 12. 最近のアプリを削除しても続行するバックグラウンドサービスの実装方法
- 13. バックグラウンドサービスのAndroidドライブAPIの使用
- 14. C#でAndroidでカスタムアダプタを使用したフィルタリングを実装する
- 15. node-xmppを使用してXMPPコンソールを読む
- 16. tcp/ipパケットリスナー
- 17. オフラインユーザーメッセージを通知する最善の方法Android Xmpp openFireを使用してチャット
- 18. C#XMPP X-FACEBOOK-PLATFORM SASL実装
- 19. xmpp-sip gateway videocall freeswitchを使用して
- 20. GAE/UserServiceを使用してXMPPにログイン
- 21. AndroidでXMPP接続(asmackを使用)を維持する
- 22. XMPPを使用したパーシスタントグループ
- 23. Google App Engineを使用してAndroidでログイン機能を実装する
- 24. AsyncTaskを使用してAndroidで非同期HTTPリクエストを実装する
- 25. Mapbox SDKを使用してAndroidで順番にナビゲーションを実装する
- 26. volley JSON androidを使用してSearchViewを実装する方法は?
- 27. AndroidでLoopjを使用して基本的なHttpClient投稿を実装する
- 28. REST APIを使用してAndroidアプリケーションにdropboxを実装する方法
- 29. アプリ内サブスクリプションモデルを使用してAndroidアプリを実装する方法
- 30. Android(Java版)でCocos2Dを使用してSprite Animationを実装する方法は?
このような着信メッセージをリッスンするチャットマネージャリスナーを作成した場合は、最初のメッセージについてのみ、リスナーはトリガーされていないことが判明した後で揚げられます。毎回xmppイベントを聞くよう提案してください。 @ロングマイルに行く.. – Roster