注销以在 xmpp smack 中添加好友

2023-12-09

在我的应用程序中,当我必须添加朋友时,我通常会发送订阅数据包 4 次 IE

A->B(订阅) B->A(已订阅) B-A(订阅) A->B(已订阅)

每执行一步后,我都会在服务器上看到状态立即发生变化。

但在我的应用程序中,只有在注销并再次登录后才会反映出来。 添加好友后,该人必须注销一次,然后好友列表中才会显示该好友>

有什么问题?我找了很多但没有发现任何错误:(

logcat 中没有显示错误。

我还在发送每个数据包后打印了 syso 输出。它总是显示为“无”(对于向其发送请求的人),并且始终显示为“发件人”(对于发送好友请求的用户)。除非有人登录,否则两者都不会反映出来。退出并再次登录。

请帮我 :(

Add Friend Function

public boolean addFriend(String jid) {
        String nickname = null;
        String idExtension = jid+"@abc.hostname.com";
        nickname = StringUtils.parseBareAddress(jid);
        if (!roster.contains(idExtension)) {
            try {   
                roster.createEntry(idExtension, nickname, null);
                //to subscribe the user in the entry
                Presence subscribe = new Presence(Presence.Type.subscribe);
                subscribe.setTo(idExtension);               
                connection.sendPacket(subscribe);   
                return true;

            } catch (XMPPException e) {
                System.err.println("Error in adding friend");
                return false;
            }
        } else {
            return false;
        }
    }

它将向其他用户发送通知..允许编写此代码:-

btn_Allow = (Button)findViewById(R.id.btn_manageNotification_ALLOW);
        btn_Allow.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                //accept the friends subscription
                Presence subscribed = new Presence(Presence.Type.subscribed);
                subscribed.setTo(id);               
                connection.sendPacket(subscribed);



                mCustomProgressDialog = CustomProgressDialog.createDialog(
                        ManageNotification.this, "", "");
                mCustomProgressDialog.show();   
                mCustomProgressDialog.setCancelable(false); 
                new Thread(){
                    public void run() {

                        try {
                            sleep(5000);
                            //mXmconn.getContactList();

                            /*Presence subscribed = new Presence(Presence.Type.subscribe);
                            subscribed.setTo(id);               
                            System.out.println("The user is :"+id);
                            connection.sendPacket(subscribed);*/

                        } catch (InterruptedException e) {}                     
                        mReturnUserMenu.sendEmptyMessage(0);

                    };
                }.start();
            }
        });

再次允许发起请求的用户时,会再次执行相同的操作。

请帮忙。订阅状态在服务器上立即发生变化,但在应用程序上,它会在注销一次后更新。

这是代表列表的代码

public  void getContactList(){

        roster = connection.getRoster();

        Collection<RosterEntry> entries = roster.getEntries();
        System.out.println("Total=="+entries.size());
        mfriendList.clear();
        mfriendPendingList.clear();
        mfriendRequestList.clear();
        for (RosterEntry entry : entries) {
            mFriendsDataClass = new FriendsDataClass();

            mFriendsDataClass.friendName = entry.getUser().toString();

            String user = entry.getUser();

            int index_of_Alpha = user.indexOf("@");
            /*System.out.println("The current working user is : "+user);
            System.out.println("His status is"+entry.getType().toString());*/
            String subID = user.substring(0, index_of_Alpha);
            Presence availability = roster.getPresence(user);
            Mode userMode = availability.getMode();

            mFriendsDataClass.availability = "";
            mFriendsDataClass.friendNickName = subID;           
            mFriendsDataClass.friendStatus = stusMsg.toString();
            mFriendsDataClass.friendState = retrieveState_mode(availability.getMode(),availability.isAvailable());
            if(entry.getType().toString().equalsIgnoreCase("to")){
                //getContactList();
                mfriendRequestList.add(mFriendsDataClass);
            }else if(entry.getType().toString().equalsIgnoreCase("from")){
                //getContactList();
                mfriendPendingList.add(mFriendsDataClass);
            }else if(entry.getType().toString().equalsIgnoreCase("both")){
                //getContactList();
                mfriendList.add(mFriendsDataClass);
            }           
        }
    }

Thanks


要发送请求,您必须使用,

roster.createEntry("mail_id", null, null);

And for Listening您必须使用以下方式收听的请求PacketListener。并检查Presence

Presence presence = (Presence) packet;
Presence presence_request = new Presence(Presence.Type.subscribed);
presence_request.setTo(presence.getFrom());
presence_request.setType(Presence.Type.subscribed);
presence_request.setFrom("current_logged_in_user");
connection.sendPacket(presence_request);
roster.createEntry(presence.getFrom(), null, null);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

注销以在 xmpp smack 中添加好友 的相关文章

  • Android 在打开应用程序时会广播吗?

    例如 如果我想知道Youtube何时打开 是否有与之相关的广播 我当然知道我可以轮询 logcat 消息来检查活动 但我可以通过广播来做到这一点吗 因为它会少得多的耗电 此链接似乎表明这是不可能的 如何跟踪 Android 中的应用程序使用
  • Android:使用 OAuth 访问 google 任务时出现问题

    由于 google 任务没有公共 api 我想编写解决方法并像浏览器一样请求数据 然后解析结果以进一步显示 为了访问数据 我使用 google 实现了 OAuth 身份验证来访问此 url https mail google com htt
  • 从 Android 代码设置的 SECRET_CODE

    我知道如何使用清单文件中的秘密代码 它与此源代码配合良好
  • 安卓定位不准确

    我正在尝试获取当前用户的位置 我试图重构我的代码以获得更好的结果 但我只是不断得到关于准确度的荒谬位置 它在 900 600 米之间 如何才能得到更好的结果 使其精度达到50m以内 这是我的代码 package com agam mapsl
  • 使用 ADB 命令获取 IMEI 号码 Android 12

    对于 11 之前的 Android 版本 我使用以下命令从我的设备获取 IMEI 号码 adb shell service call iphonesubinfo 4 cut c 52 66 tr d space or adb shell s
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • 出现错误错误:res/menu/mainMenu.xml:文件名无效:必须仅包含[a-z0-9_。]

    我是安卓新手 刚刚开始使用 我在 res 文件夹中创建了一个文件 menu mainMenu xml 但我得到了错误 Error res menu mainMenu xml invalid file name must contain on
  • 如何在android中设置权限WRITE_SECURE_SETTINGS? [复制]

    这个问题在这里已经有答案了 我正在尝试启用 4 0 以上的辅助功能服务设置 但它显示异常 即 引起原因 java lang SecurityException 权限拒绝 写入安全设置需要 android permission WRITE S
  • 使用 Retrofit2 和 Mockito 或 Robolectric 进行 Android 单元测试

    我可以测试 Retrofit2beta4 的真实响应吗 我需要 Mockito 或 Robolectic 吗 我的项目中没有活动 它将是一个库 我需要测试服务器是否正确响应 现在我有这样的代码并卡住了 Mock ApiManager api
  • AudioTrack、SoundPool 或 MediaPlayer,我应该使用哪个?

    如果我需要能够 播放多个音频文件 具有不同的持续时间 例如 5 到 30 秒 独立设置右 左声道的音量 应用声音效果 如混响 失真 那么 我应该使用哪个 API 另外 我在 AudioTrack API 上找不到太多文档 有谁知道在哪里可以
  • 如何检查 Android 中连接的 wifi 网络是否处于活动状态

    如何自动检查android中连接的WiFi网络上的互联网是否处于活动状态 我可以检查 wifi 是否已启用或 wifi 网络是否已连接 但我不确定如何检查互联网是否已连接 这可能吗 private boolean connectionAva
  • 如何在TableLayout中创建三列

    我正在开发一个使用的屏幕TableLayout 在这里我可以轻松创建两列 但我怎样才能创建三列呢 这里有一个例子
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • PhoneStateListener 不调用

    这是我的完整代码 广播示例 java package com example broadcast gt import android app Activity import gt android content Context import
  • HERE 地图:更改路线已行驶部分的颜色

    导航时可以改变路线的颜色吗 具体来说 我希望路线中已行驶的部分的颜色与即将行驶的部分的颜色不同 现在都是同一个颜色 将 MapRoute 对象的 TravelColor 变量设置为透明对我来说很有效 mapRoute color Resou
  • 如何修改 Skobbler 注释而不重新添加它

    我必须修改 SKAnnotation 的图像 注释生成器代码 private SKAnnotation getAnnotationFromView int id int minZoomLvl View view SKAnnotation a
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • 获取其他指针的MotionEvent.getRawX/getRawY

    我可以获取其他指针的MotionEvent getRawX getRawY 值吗 MotionEvent getRawX API 参考 http developer android com reference android view Mo
  • 如何在片段中实现 onBackPressed() 和意图?

    我知道 onBackPressed 是活动中的一种方法 但是 我想在片段中使用该功能 以便当按下后退按钮时 它会通过 Intent 重定向到另一个活动 有什么办法解决这个问题吗 public class News Events fragme

随机推荐

  • 在 R 中工作时分离所有包

    在努力解决另一个问题时 我遇到了这个问题 我可以通过以下方式删除所有 R 对象 rm list ls all TRUE 是否有等效的命令可以在工作会话期间分离已安装的软件包 gt sessionInfo R version 2 12 2 2
  • 无法添加 DLL 引用到 VS 2008

    我想知道是否有人可以帮助我 我正在尝试在 VB Net 3 5 应用程序中添加对 LAME MP3 编码器的引用 我使用的 DLL lame enc dll v3 98 2 是从这里下载的 http rarewares org mp3 la
  • 如何对后续行进行分组(基于标准)然后对它们进行计数 [MySQL]?

    假设我有这样一个表 按日期排序 id name type date 1 A 1 01 08 2012 2 A 2 01 08 2012 3 B 1 02 09 2012 4 A 1 01 10 2012 5 A 4 01 10 2012 6
  • 卸载并再次安装应用程序时,Firebase 身份验证返回特定用户

    我有一个问题 我在我的应用程序中使用 google 登录 Firebase 假设有3个用户X Y and Z我曾与谁一起登录我的应用程序 我用于检查用户是否登录的代码 FirebaseAuth mAuth FirebaseAuth getI
  • Foundation 均衡器插头 + BS 3.2?

    尝试使用均衡器插件 但 id 不起作用 并且没有错误 它看起来像http goo gl OvKy1g 这是一个页面http goo gl INMqUL 我需要为其添加一些 css 吗 您可以将 Foundation Equalize 插件与
  • 如何使用 SQL 参数

    我正在尝试为我正在制作的一个简单游戏创建一个数据库 但在查询玩家统计数据时遇到问题 至此数据库可以进行搜索和更新 但是只有修改实际代码才能改变搜索词 到目前为止的整个代码 对任何缩进错误表示歉意 Importing modules impo
  • NHibernate 和拦截器 - 测量/监控 SQL 往返时间

    为了获得缓慢或潜在缓慢区域的早期警告 我希望有一个 NHibernate 拦截器 它可以充当性能监视器 以便任何花费超过给定时间的数据库操作都会引发一个事件并且 重要的是 应用程序日志中的完整堆栈跟踪 拦截器似乎是了解这一点的一个很好的窗口
  • 在多个字符串中查找完全相同的字符串

    下面的例子 我有一个像这样的数组 Array 0 gt vlakke lasflenzen PN6 1 gt vlakke lasflenzen PN10 2 gt vlakke lasflenzen PN16 3 gt vlakke la
  • LLVM 将 pthread 函数调用插入到 IR 中

    我正在写一个 LLVM 通行证 它是LoopPass 需要将 pthread create 和 pthread join 等 pthread 函数调用插入到 IR 中 我知道如何创建函数调用并将其插入到 IR 中 但我无法获取 pthrea
  • 如何在 sqlalchemy 表达式语言中设置 DEFERRED 约束?

    我有一个表 我们称之为 table A 它有一个引用 table B 的外键 Table B 还有一个引用 table A 的外键 要为 table A 插入一条记录 我必须将外键约束配置为最初延迟 我试图首先创建table A 第二次创建
  • 使用 Zurb Foundation 滚动过去时,粘性顶部栏会使页面跳转

    我的网站使用 Zurb Foundation 4 框架 我想要一个位于标题下方的导航栏 当您滚动过去时 该导航栏会粘在页面顶部 这工作得很好 除了当顶部栏粘在页面顶部时页面内容会向上跳跃约 45 像素 尽管这是一个不同的导航元素 但可以在此
  • Auth.auth().currentUser?.reload() 不会刷新 currentUser.isEmailVerified

    我正在尝试使用 Firebase 实施电子邮件验证 我已经创建了成功重定向到我的应用程序的动态链接 我也在网上测试了该链接 它工作完美并且可以验证电子邮件 但是 验证电子邮件上的链接将我重定向到我的应用程序 Auth auth curren
  • VBA - 使用Excel中已选择的颜色来填充单元格内部

    我知道如何将单元格的内部颜色设置为某种颜色 但是有没有办法让它 即单元格颜色 默认为功能区颜色窗口中已选择的颜色 我很晚才谈到这个问题 但由于它在谷歌搜索其他内容时出现 我想我会提到 当它说你不能做提交者想要的事情时 所选答案是不正确的 您
  • IntelliJ IDEA 升级后出现 NoClassDefFoundError

    最近我使用 IntelliJ IDEA 和 Gradle 创建了一个新项目进行依赖管理 解决项目所需的所有依赖项并运行它后 出现以下错误 java lang NoClassDefFoundError org springframework
  • 从R中的数据表制作直方图[重复]

    这个问题在这里已经有答案了 我有一个变量a 其数据为 Count Value 2 Apple 5 Ball 6 Cat 10 Dog 我想构造一个直方图 使得 x 轴上有值 y 轴上有计数 不知道该怎么办 我们可以用barplot barp
  • 仅将样式应用于可编辑内容中的选定文本

    Problem 你好 我有一些代码 当单击按钮时 contentEditable 中的所有内容 p 标签的字体粗细为 600 粗体 我想知道的是 当按下按钮时 如何才能做到这一点 而不是将 p 标签中的所有内容设置为 600 字体粗细 而只
  • 如何在ListView onItemClick中获取HashMap id值?

    我尝试将 ImageList 添加到我的应用程序中 我添加成功了 它显示了我选择的银行的徽标 我添加了通过HashMap 因为我想在单击日志图像时获取银行名称 但我无法输入银行名称单击项目时方法 谁能帮我解决这个问题 这是我的活动代码 pu
  • 使用日期时间选择器从sql数据库读取数据

    如何使用 datetimepicker 值从数据库读取数据 我的表单中有一个日期时间选择器和一个数据网格视图 我想从 Sql 数据库表中获取具有所选日期时间选择器值的数据 我尝试使用这段代码 Private Sub BTNFIND Clic
  • Task.Run 中的动态

    我在不相关的类中有一个长时间运行的同名任务 我试图使用动态的通用方法来获取此代码 我收到以下错误 用户代码未处理 Microsoft CSharp RuntimeBinder RuntimeBinderException 消息 无法将类型
  • 注销以在 xmpp smack 中添加好友

    在我的应用程序中 当我必须添加朋友时 我通常会发送订阅数据包 4 次 IE A gt B 订阅 B gt A 已订阅 B A 订阅 A gt B 已订阅 每执行一步后 我都会在服务器上看到状态立即发生变化 但在我的应用程序中 只有在注销并再