Чтобы открыть ссылку на сайт из 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 вызывает именно контекст
Как проверить
- Запустите приложение на эмуляторе или телефоне.
- Нажмите кнопку.
- Убедитесь, что открылся браузер.
- Проверьте, что ссылка начинается с
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. Для соседних задач пригодятся эти разборы:
- Kotlin Android: первый экран без перегруза
- UUID Android-устройства в Kotlin ViewModel: как получить безопасно
- Как в Android Studio поменять Kotlin на Java
- Как воспроизвести аудио на Kotlin в Android Studio



