我正在开发一个 Xmpp 聊天应用程序。
在我的 PacketListener 中,我正在尝试处理订阅请求,除了 AlertDialog 之外,这一切都像一个魅力。它没有出现,所以我无法得到用户的确认。
我试过了 ,
Toast.makeText()
- 更改 UI(文本视图)
getApplicationContext()
代替Display.this
但它们都不起作用。
正如我所说,我没有收到任何错误,我也尝试调试,它似乎在代码方面工作。
这是我的代码,
//imports....
public class Display extends Activity {
//....more codes
private void addListener() {
//subscribe request handler
Roster roster = conn.getRoster();
roster.setSubscriptionMode(Roster.SubscriptionMode.manual);
PacketListener packetListener = new PacketListener() {
@Override
public void processPacket(Packet packet) {}
};
conn.addPacketListener(packetListener, new PacketFilter(){
@Override
public boolean accept(Packet packet) {
// TODO Auto-generated method stub
final Presence presence = (Presence)packet;
subscriptonAnswer = false;
if(packet instanceof Presence) {
if(((Presence)packet).getType().equals(Presence.Type.subscribe)) {
new AlertDialog.Builder(Display.this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Subscription Message")
.setMessage(StringUtils.parseName(packet.getFrom())+ " wants to add you, do you accept?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
Presence reply = new Presence(Presence.Type.subscribed);
reply.setTo(presence.getFrom());
conn.sendPacket(reply);
}
})
.setNegativeButton("No", null)
.show();
}
}
return true;
}});
}
//....more codes
}