Страницы

Поиск по вопросам

Показаны сообщения с ярлыком android-vksdk. Показать все сообщения
Показаны сообщения с ярлыком android-vksdk. Показать все сообщения

воскресенье, 15 декабря 2019 г.

Помогите распарсить профиль в board в VkApi

#java #android #android_vksdk


Помогите распарсить  профиль в board в VkApi....не понимаю как...все приходит, правильно,
а фото и имя с фамилией стоит одна у всех... как это исправить?

VKParameters param = new VKParameters();
param.put(VKApiConst.GROUP_ID, "ID_ГРУППЫ");
param.put("topic_id", "ID_ТОПИКА");
param.put(VKApiConst.EXTENDED, 1);

VKRequest result =
        new VKRequest(String.format(Locale.US, "%s.%s", "board", "getComments"),
                param, VKCommentArray.class);
result.executeWithListener(new VKRequest.VKRequestListener() {
    @Override
    public void onComplete(VKResponse response) {
        super.onComplete(response);
        VKCommentArray parsedModel = (VKCommentArray) response.parsedModel;
        try {
            object = new JSONObject(response.responseString);
            responseObject = object.getJSONObject("response");
            array = responseObject.getJSONArray("profiles");
            for (int i = 0; i < object.length(); i++) {
                JSONObject item = array.getJSONObject(i);
                first_name = item.getString("first_name");
                last_name = item.getString("last_name");
                logo = item.getInt("photo_50");
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        for (com.vk.sdk.api.model.VKApiComment topic : parsedModel) {

            String date = (new SimpleDateFormat("d MMM yyyy 'в' HH:mm",
                    new Locale("ru")).format(new Date(topic.date * 1000L)));
            arr_list.add(new BoardItems1(logo, first_name + " " + last_name, date,
                    topic.text));
        }
        listView.setAdapter(adapter);
    }
}




ошибка такая:


  java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
  at
  java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
  at java.util.ArrayList.get(ArrayList.java:308)
  atcalculation.*..**.by.board.BoardActivity1$1.onComplete(BoardActivity1.java:147)
  at com.vk.sdk.api.VKRequest$3.run(VKRequest.java:482)
  at android.os.Handler.handleCallback(Handler.java:739)
  at android.os.Handler.dispatchMessage(Handler.java:95)
  at android.os.Looper.loop(Looper.java:135)
  at android.app.ActivityThread.main(ActivityThread.java:5296)
  at java.lang.reflect.Method.invoke(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:372)
  atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)

    


Ответы

Ответ 1



Согласно доке вам надо добавить к запросу параметр extended со значением 1, для того, чтобы информация о юзерах приходила вместе с информацией о комментарии. После этого, согласно той же доке информация о юзерах, будет в массиве, лежащем рядом с массивом комментов. VKParameters param = new VKParameters(); param.put(VKApiConst.GROUP_ID, "ID_ГРУППЫ"); param.put("topic_id", "ID_ТОПИКА"); param.put(VKApiConst.EXTENDED, 1); VKRequest result = new VKRequest(String.format(Locale.US, "%s.%s", "board", "getComments"), param, VKCommentArray.class); result.executeWithListener(new VKRequest.VKRequestListener() { @Override public void onComplete(VKResponse response) { super.onComplete(response); VKCommentArray parsedModel = (VKCommentArray)response.parsedModel; List names = new ArrayList<>(); List surNames = new ArrayList<>(); List logos = new ArrayList<>(); try { object = new JSONObject(response.responseString); responseObject = object.getJSONObject("response"); array = responseObject.getJSONArray("profiles"); for (int i=0; i< object.length(); i++){ JSONObject item = array.getJSONObject(i); names.add(item.getString("first_name")); surNames.add(item.getString("last_name")); logos.add(item.getInt("photo_50")); } } catch (JSONException e) { e.printStackTrace(); } int i = 0; for (com.vk.sdk.api.model.VKApiComment topic : parsedModel) { String date = (new SimpleDateFormat("d MMM yyyy 'в' HH:mm", new Locale("ru")).format(new Date(topic.date* 1000L))); arr_list.add(new BoardItems1(logos.get(i), names.get(i) + " " + surNames.get(i), date, topic.text)); i++ } listView.setAdapter(adapter); } }

суббота, 13 июля 2019 г.

VK api - Как скрыть статус “online” авторизированного пользователя?

Есть приложение под Android для работы с `VKontakte. В нем происходит авторизация по средствам VK SDK. При этом статус авторизированного пользователя - "online". Каким образом можно реализовать так называемую "невидимку" (статус пользователя "offline" когда пользователь авторизирован и находиться в приложении)? Единственное, что приходит в голову - написать свои хранимые процедуры, в которых будут обрабатываться запросы к VKontakte API и работать уже с ними. Правильное ли это решение или есть другие способы?


Ответ

https://vk.com/dev/account.setOffline
Помечает текущего пользователя как offline (только в текущем приложении).

пятница, 14 июня 2019 г.

VKsdk Android Studio получить id пользователя, под которым зашел

Нужно получить id пользователя под которым зашел в приложение, как это сделать?


Ответ

Довольно просто:
Хранится он здесь: VKAccessToken.currentToken().userId;
Вот так его можно безопасно узнать:
int getMyId() { final VKAccessToken vkAccessToken = VKAccessToken.currentToken(); return vkAccessToken != null ? Integer.parseInt(vkAccessToken.userId) : 0; }