Как создать ссылку на сайт в Android-приложении на Kotlin

Чтобы открыть ссылку на сайт из Android-приложения на Kotlin, используйте Intent.ACTION_VIEW и Uri.parse. Пользователь нажимает кнопку, Android открывает браузер или предлагает выбрать приложение для ссылки

Минимальный пример:

val url = "https://aglamov.biz"
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(intent)

Пример для обычной Activity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val button = findViewById<Button>(R.id.openSiteButton)

        button.setOnClickListener {
            val url = "https://aglamov.biz"
            val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
            startActivity(intent)
        }
    }
}

В XML-разметке должна быть кнопка с id openSiteButton

Пример для Jetpack Compose

@Composable
fun OpenSiteButton() {
    val context = LocalContext.current

    Button(onClick = {
        val intent = Intent(
            Intent.ACTION_VIEW,
            Uri.parse("https://aglamov.biz")
        )
        context.startActivity(intent)
    }) {
        Text("Открыть сайт")
    }
}

Такой вариант подходит для Compose-экрана. Главное — взять Context через LocalContext.current, потому что startActivity вызывает именно контекст

Как проверить

  1. Запустите приложение на эмуляторе или телефоне.
  2. Нажмите кнопку.
  3. Убедитесь, что открылся браузер.
  4. Проверьте, что ссылка начинается с https://.

Если ссылка написана без схемы, например aglamov.biz, Android может не понять, чем ее открыть. Пишите полный адрес: https://aglamov.biz

Что делать, если браузера нет

Обычно на Android есть приложение для открытия ссылок. Но для аккуратности можно проверить, есть ли Activity для Intent:

if (intent.resolveActivity(packageManager) != null) {
    startActivity(intent)
}

В Compose можно использовать context.packageManager

Если обработчика нет, покажите пользователю короткое сообщение, а не оставляйте кнопку без реакции

Toast.makeText(
    this,
    "Не найдено приложение для открытия ссылки",
    Toast.LENGTH_SHORT
).show()

Такой сценарий редко нужен на обычном телефоне, но полезен для эмуляторов, тестовых сборок и нестандартных устройств

Нужно ли разрешение INTERNET

Для открытия внешней ссылки через браузер вашему приложению обычно не нужно разрешение INTERNET, потому что сайт открывает другое приложение. Но если ваше приложение само загружает данные по сети, тогда разрешение понадобится

Когда лучше WebView

Если нужно показать документацию, страницу помощи или пользовательское соглашение внутри приложения, можно рассмотреть WebView. Но для обычной ссылки «перейти на сайт» внешний браузер проще и безопаснее: пользователь видит адрес, может открыть вкладку, сохранить страницу и использовать привычные настройки браузера

Частые ошибки

Забыть https

Uri.parse("site.ru") не то же самое, что Uri.parse("https://site.ru")

Открывать ссылку в основном потоке через сетевой запрос

Для простого открытия браузера сетевой запрос не нужен. Не проверяйте сайт вручную перед каждым кликом

Путать WebView и внешнюю ссылку

ACTION_VIEW открывает внешний браузер. Если нужно встроить сайт внутрь приложения, это уже задача для WebView, но у нее свои риски и настройки

Что почитать дальше по Kotlin

Если нужен общий маршрут по теме, откройте рубрику Kotlin. Для соседних задач пригодятся эти разборы:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x