VK API Получение сообщений

103
21 апреля 2021, 23:40

Как вывести список сообщений в вк. Общался с поддержкой дали доступ к сообщениям, пытаюсь вывести сообщение но ничего не происходит. Я выяснил, он не заходит в метод public void onComplete(VKResponse response). Какие есть пути решения проблемы?

Код для получения сообщения:

Button_update.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            VKRequest request = VKApi.messages().get(VKParameters.from(VKApiConst.COUNT));
            Toast.makeText(getApplicationContext(),request.toString(),Toast.LENGTH_LONG).show();
            request.executeWithListener(new VKRequest.VKRequestListener() {
                @Override
                public void onComplete(VKResponse response) {
                    super.onComplete(response);
                    VKApiGetMessagesResponse getMessagesResponse = (VKApiGetMessagesResponse) response.parsedModel;
                    VKList<VKApiMessage> list = getMessagesResponse.items;
                    ArrayList<String> arrayList = new ArrayList<>();
                    for(VKApiMessage msg : list){
                        arrayList.add(msg.body);
                    }
                    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_expandable_list_item_1,arrayList);
                    List_message.setAdapter(arrayAdapter);
                }
            });
        }
    });

Код всего приложения:

private String[] score = new String[]{VKScope.FRIENDS, VKScope.MESSAGES};
ListView List_message;
Button Button_update;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    iniciailzation_components();
    VKSdk.login(this, score);
    Button_update.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            VKRequest request = VKApi.messages().get(VKParameters.from(VKApiConst.COUNT));
            //Toast.makeText(getApplicationContext(),request.toString(),Toast.LENGTH_LONG).show();
            request.executeWithListener(new VKRequest.VKRequestListener() {
                @Override
                public void onComplete(VKResponse response) {
                    super.onComplete(response);
                    VKApiGetMessagesResponse getMessagesResponse = (VKApiGetMessagesResponse) response.parsedModel;
                    VKList<VKApiMessage> list = getMessagesResponse.items;
                    ArrayList<String> arrayList = new ArrayList<>();
                    for(VKApiMessage msg : list){
                        arrayList.add(msg.body);
                    }
                    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_expandable_list_item_1,arrayList);
                    List_message.setAdapter(arrayAdapter);
                }
            });
        }
    });


}
private void iniciailzation_components(){
    List_message = findViewById(R.id.List_message);
    Button_update = findViewById(R.id.Button_update);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (!VKSdk.onActivityResult(requestCode, resultCode, data, new VKCallback<VKAccessToken>() {
        @Override
        // Пользователь успешно авторизовался
        public void onResult(VKAccessToken res) {
            // Вывод списка друзей
           VKRequest request = VKApi.friends().get(VKParameters.from(VKApiConst.FIELDS, "first_name, last_name"));
            request.executeWithListener(new VKRequest.VKRequestListener() {
                @Override
                public void onComplete(VKResponse response) {
                    super.onComplete(response);
                    VKList list = (VKList) response.parsedModel;
                    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_expandable_list_item_1,list);
                    List_message.setAdapter(arrayAdapter);
                }
            });
            Toast.makeText(getApplicationContext(),"Good",Toast.LENGTH_LONG).show();
        }
        @Override
        // Произошла ошибка авторизации (например, пользователь запретил авторизацию)
        public void onError(VKError error) {
            Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show();
        }
    })) {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

}

Answer 1

1.) Добавьте метод onError(). И в нём сможете увидеть свою ошибку.

@Override
public void onComplete(VKResponse response) {
    super.onComplete(response);
}
@Override
public void onError(VKError error) {
    super.onError(error);
}

2.) У вас ошибка в том, что вы хотите получить список сообщений не тем методом, который нужен. Вам нужен messages.getDialogs. На настоящий момент: messages.getConversations.

3.) Так как пользуетесь старым API, то советую делать запросы таким образом:

new VKRequest("messages.getConversations", VKParameters.from(
        VKApiConst.COUNT, 20))
        .executeWithListener(new VKRequest.VKRequestListener() {
           @Override
           public void onComplete(VKResponse response) {
               super.onComplete(response);
           }
           @Override
           public void onError(VKError error) {
               super.onError(error);
           }
});
READ ALSO
Программное нажатие на элементы Webview

Программное нажатие на элементы Webview

Тренируюсь в создании парсера, работающего в приложении android и умеющего взаимодействовать с разбираемым сайтомНе могу понять как сделать...

115
Пытаюсь внедрять сценарии Ruby в spring

Пытаюсь внедрять сценарии Ruby в spring

Пытаюсь внедрять сценарии Ruby в spring из книги springinaction,бросает исключение в xml файле, наверное как-то не так сделал расположение файлов или еще...

142
Не запускается .jar файл с JavaFX

Не запускается .jar файл с JavaFX

В Eclipse все компилируется, а вот когда я запаковалjar файл, он вообще не открывается

118