Как поделиться страницей в VK в приложении?

Чтобы поделиться страницей в социальной сети ВКонтакте (VK) из вашего приложения на платформе Android, вам потребуется использовать VK Android SDK — набор инструментов, предоставляемых ВКонтакте для удобной интеграции вашего приложения с социальной сетью.

Вот шаги, которые следует выполнить, чтобы реализовать данную функциональность:

Шаг 1: Подключение SDK
Включите VK Android SDK в ваш проект. Это можно сделать, добавив следующую зависимость в файл build.gradle:

implementation 'com.vk:androidsdk:2.0.0'

Или используя Maven:

<dependency>
  <groupId>com.vk</groupId>
  <artifactId>androidsdk</artifactId>
  <version>2.0.0</version>
</dependency>

Шаг 2: Получение ключа доступа
Вам необходимо получить ключ доступа API вашего приложения ВКонтакте. Зарегистрируйтесь на сайте разработчиков ВКонтакте (https://vk.com/dev) и создайте приложение, чтобы получить ключ доступа.

Шаг 3: Авторизация пользователя
В вашем приложении реализуйте процесс авторизации пользователя через VK SDK. Для этого создайте экземпляр VKLoginCallback и выполните метод VKSdk.login(), передав в него список разрешений и callback объект для обработки результатов авторизации. Пример кода:

private VKCallback<VKAccessToken> authCallback = new VKCallback<VKAccessToken>() {
    @Override
    public void onResult(VKAccessToken res) {
        // Пользователь успешно авторизован
    }

    @Override
    public void onError(VKError error) {
        // Возникла ошибка при авторизации пользователя
    }
};

private void startVkLogin() {
    VKSdk.login(this, VKScope.WALL, VKScope.PHOTOS, VKScope.GROUPS, VKScope.OFFLINE);
}

В callback метода onResult() вы можете обработать успешную авторизацию пользователя, а в методе onError() — ошибку авторизации.

Шаг 4: Поделиться страницей
После успешной авторизации пользователя вы можете использовать VKShareDialog для отображения диалога с предложением поделиться ссылкой на страницу. Вам потребуется сконфигурировать VKShareDialog и вызвать метод show(). Пример кода:

private void shareVkPage() {
    VKShareDialog shareDialog = new VKShareDialogBuilder()
            .setText("Текст для общего сообщения")
            .setAttachmentLink("Название страницы", "Ссылка на страницу")
            .setShareDialogListener(new VKShareDialog.VKShareDialogListener() {
                @Override
                public void onVkShareComplete(int postId) {
                    // Успешно поделено
                }
                
                @Override
                public void onVkShareCancel() {
                    // Поделение отменено
                }
                
                @Override
                public void onVkShareError(VKError error) {
                    // Ошибка при попытке поделиться
                }
            }).build();
    shareDialog.show(getSupportFragmentManager(), "VK_SHARE_DIALOG");
}

В методе setText() вы можете передать текст сообщения. Метод setAttachmentLink() позволяет добавить ссылку на страницу, которую вы хотите поделиться. В методе onVkShareComplete() можно обработать успешное поделение, а в методе onVkShareCancel() и onVkShareError() обработать отмену операции или ошибку.

Шаг 5: Запрос разрешений
В некоторых случаях ВКонтакте может потребоваться обновить разрешения текущего авторизованного пользователя, чтобы позволить вашему приложению поделиться на его странице. Для этого вы можете использовать VKAuthCallback. Пример кода:

private VKAuthCallback additionalPermissionsCallback = new VKAuthCallback() {
    @Override
    public void onLogin(@NotNull VKAccessToken token) {
        // Разрешение получено успешно
    }

    @Override
    public void onLoginFailed(int errorCode) {
        // Ошибка при получении разрешения
    }
};

private void requestAdditionalPermissions() {
    VKSdk.login(this, VKScope.WALL, VKScope.PHOTOS, VKScope.GROUPS, VKScope.OFFLINE, 
        VKScope.DOCS, VKScope.STATUS, VKScope.NOTES, VKScope.PAGES,
        VKScope.MESSAGES, VKScope.NOTIFICATIONS, VKScope.STATS, VKScope.ADS,
        VKScope.OFFLINE, VKScope.EMAIL, VKScope.MARKET, VKScope.MANAGE);
}

Вы можете передать все требуемые разрешения в метод VKSdk.login(). В методах onLogin() и onLoginFailed() вы можете обработать успешное получение разрешения или ошибку.

Вот и все! После выполнения этих шагов вы сможете добавить возможность поделиться страницей ВКонтакте в ваше Android-приложение.