gpt4 book ai didi

android - Android 上的 XMPP 事件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:09:21 25 4
gpt4 key购买 nike

我正在尝试开发一个拦截 XMPP 消息并执行操作的后台进程,我使用 asmack 作为主要的 XMPP 库。我想我需要一个响应特定 Intent 的 broadcastReciever。问题是如何提出 Intent ?它必须是可能的,因为此功能存在于 google talk 客户端中。提前谢谢了。

最佳答案

如果您真的想实现这种行为,您可能会考虑运行 asmack XMPP 客户端的持久后台服务。 XMPP 客户端的监听器方法(即 processPacket)可能会引发 Intent 。然后,您可以使用 BroadcastReceiver 从另一个应用程序或在此应用程序中捕获此 Intent 。

final Context context = getContext(); // or getApplicationContext(). context must be final.
PacketFilter packetFilter = new MessageTypeFilter(Message.Type.chat);
connection.addPacketListener(new PacketListener() {
@Override
public void processPacket(Packet packet) {
Message message = (Message) packet;
if (message.getBody() != null) {
String from = StringUtils.parseBareAddress(message.getFrom());
Intent intent = new Intent();
intent.setAction("your.package.XMPP_PACKET_RECEIVED");
intent.putExtra("from", from);
intent.putExtra("body", message.getBody());
context.sendBroadcast(i);
}
}
}, packetFilter);

您还可以尝试通过创建接收 Intent 并通过 XMPP 发送的 BroadcastReceiver(或 IntentService)来实现其他通信方向。 BackgroundReceiver 必须为每条消息创建一个新连接,这会很慢但很节能(不需要保持 XMPP session 处于 Activity 状态)。

关于android - Android 上的 XMPP 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4668477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com