1

XMPP で他のユーザーに友達リクエストを送信したときに、他のユーザーがそれを拒否したい場合、名簿からエントリを削除する必要がありますが、ユーザーからエントリを削除することはできません。それは私に強制終了を与えています(ヌルポインタ例外あり)

これが私の拒否ボタンのコードです

btn_Deny = (Button)findViewById(R.id.btn_manageNotification_DENY);
        btn_Deny.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Presence unsubscribe = new Presence(Presence.Type.unsubscribed);
                unsubscribe.setTo(id);              
                connection.sendPacket(unsubscribe);

                /*String message = mXmconn.removeFriend(subID, CMMStaticVariable.CommonConnection);
                System.out.println(message);*/

                Intent returnBack = new Intent(ManageNotification.this, UserMenuActivity.class);
                startActivity(returnBack);
                finish();               
            }
        });     
    }

友達を削除

public String removeFriend(String jid, XMPPConnection connection){
        roster = connection.getRoster();
        String message = "";
        try {
            RosterEntry rosterEntry = roster.getEntry("chamak@abec.info.com");
            System.out.println("rosterEntryy"+rosterEntry.toString());

            roster.removeEntry(rosterEntry);
            message = "You have denied the friend request";
        } catch (XMPPException e) {
            e.printStackTrace();
            message = "Exception";
        }
        return message;
    }

rosterEntry = null; で null ポインターを与えています。

ありがとう

4

1 に答える 1

1

XMPP-CORE では、サブスクリプション要求が拒否された場合、サーバーがユーザーの名簿から名簿項目を削除する必要があると定義しています。したがって、リクエストしようとしてもそこにあるはずのないアイテムです。

仕様から:

注: 連絡先のサーバーが以前に追跡目的で連絡先の名簿にユーザーを追加した場合、この時点で関連するアイテムを削除する必要があります。

詳しくはこちらをご覧ください

于 2013-03-06T08:27:34.213 に答える