Roid Приватный чат

Я застрял при создании личного диалога создания чата. Я пытаюсь создать статический диалог приватного чата для id 19.

Я получаю нулевую ссылку на объект на PrivateChatManager

public class ChattingFragment extends Fragment {
    public static final String APP_ID = "*****";
    public static final String AUTH_KEY = "********";
    public static final String AUTH_SECRET = "*********";
    public static final String ACCOUNT_KEY = "*************";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_chatting, container, false);

        QBSettings.getInstance().init(getActivity(), APP_ID, AUTH_KEY, AUTH_SECRET);
        QBSettings.getInstance().setAccountKey(ACCOUNT_KEY);


                loginForQuickBlox();

        QBAuth.createSession(new QBEntityCallback<QBSession>() {

            @Override
            public void onSuccess(QBSession session, Bundle params) {
                                  Toast.makeText(getActivity(), "Sucess session", Toast.LENGTH_LONG).show();
                }

            @Override
            public void onError(QBResponseException errors) {
                Toast.makeText(getActivity(), "error session" + errors.getMessage(), Toast.LENGTH_LONG).show();
            }
        });


        return rootView;
    }

   private boolean loginForQuickBlox() {
        final QBUser user = new QBUser();
        user.setEmail("emailid@email.com");
        user.setPassword("123456789");

        QBUsers.signIn(user, new QBEntityCallback<QBUser>() {
            @Override
            public void onSuccess(QBUser users, Bundle params) {
                Toast.makeText(getActivity(), "Sucess login" + users.getId(), Toast.LENGTH_LONG).show();

                /**here i have to create static dialog for chat with id 19 **/
                QBChatService chatService = QBChatService.getInstance();
                QBPrivateChatManager privateChatManager = chatService.getPrivateChatManager();
                privateChatManager.createDialog(19, new QBEntityCallbackImpl<QBDialog>() {
                    @Override
                    public void onSuccess(QBDialog dialog, Bundle args) {

                    }


                });

            }

            @Override
            public void onError(QBResponseException errors) {

                Toast.makeText(getActivity(), errors.getMessage(), Toast.LENGTH_LONG).show();
            }
        });

        return true;
    }
}

Ниже мой logcat.

AndroidRuntime: FATAL EXCEPTION: main
Process: com.archi.intrisfeed, PID: 24211
java.lang.NullPointerException: Attempt to invoke virtual method 'com.quickblox.core.QBRequestCanceler com.quickblox.chat.QBPrivateChatManager.createDialog(int, com.quickblox.core.QBEntityCallback)' on a null object reference
  at com.archi.intrisfeed.fragment.ChattingFragment$3.onSuccess(ChattingFragment.java:102)
  at com.archi.intrisfeed.fragment.ChattingFragment$3.onSuccess(ChattingFragment.java:96)
  at com.quickblox.core.Query.notifySuccess(Query.java:372)
  at com.quickblox.core.Query$VersionEntityCallback.completedWithResponse(Query.java:404)
  at com.quickblox.core.Query.completedWithResponse(Query.java:277)
  at com.quickblox.core.server.HttpRequestRunnable$1.handleMessage(HttpRequestRunnable.java:42)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:148)
  at android.app.ActivityThread.main(ActivityThread.java:5417)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
10-18 12:55:54.181 1224-1224/? E/libEGL: called unimplemented OpenGL ES API

2 ответа

Вы должны войти в чат, прежде чем создавать диалог (если вы используете QuickBlox Android SDK версии 2.6.1 или более ранней), пожалуйста, смотрите ссылку. С версии 3.0 вы можете создавать диалоги, используя класс QBRestChatService, подробности по ссылке

Попробуйте создать сеанс с quickblox из данных пользователя, а затем войдите в систему для чата:

submit.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
        uNameStr = emailEdt.getText().toString();
        uPwdStr = passwordEdt.getText().toString();
        final QBUser user = new QBUser();
        user.setEmail(uNameStr);
        user.setPassword(uPwdStr);
        createSession(user);
     }
});

Создание сеанса:

private void createSession(final QBUser user){
        QBAuth.createSession(user,new QBEntityCallback<QBSession>() {
            @Override
            public void onSuccess(QBSession result, Bundle params) {
                user.setId(result.getUserId());
                loginForQuickBlox(user);
            }

            @Override
            public void onError(QBResponseException e) {
                e.printStackTrace();
                createSession(user);
            }
        });
}

Логин пользователя:

private boolean loginForQuickBlox(QBUser user) {
        QBUsers.signIn(user, new QBEntityCallback<QBUser>() {
            @Override
            public void onSuccess(QBUser users, Bundle params) {
                Toast.makeText(getActivity(), "Sucess login" + users.getId(), Toast.LENGTH_LONG).show();
                QBChatService chatService = QBChatService.getInstance();
                QBPrivateChatManager privateChatManager = chatService.getPrivateChatManager();
                privateChatManager.createDialog(19, new QBEntityCallbackImpl<QBDialog>() {
                    @Override
                    public void onSuccess(QBDialog dialog, Bundle args) {
                    }
                });
            }

            @Override
            public void onError(QBResponseException errors) {
                Toast.makeText(getActivity(), errors.getMessage(), Toast.LENGTH_LONG).show();
            }
        });
        return true
}
Другие вопросы по тегам