Запуск другого приложения Android после нажатия кнопки в Kotlin Jetpack ComposeAndroid

Форум для тех, кто программирует под Android
Ответить
Гость
 Запуск другого приложения Android после нажатия кнопки в Kotlin Jetpack Compose

Сообщение Гость »


Я новичок в разработке Android. Я хотел бы задать вопрос: этот код позволяет открыть приложение настроек, как только я нажму кнопку. Я хотел бы сделать то же самое для следующего демонстрационного приложения https://github.com/Picovoice/porcupine/ ... d/Activity, установленного на моем телефоне. Почему он не открывается? Нужно ли мне что-то добавлять в файл манифеста? Заранее большое спасибо.
Этот код работает без проблем для пакета с именем "com.android.settings", но не работает для "com.android.youtube"

Код: Выделить всё

package com.example.jkfdsjlk

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import com.example.jkfdsjlk.ui.theme.JkfdsjlkTheme

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
JkfdsjlkTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
MyApp(
modifier = Modifier.padding(innerPadding)
)
}
}
}
}
}

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

// Create a launcher for activity result
val launcher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.StartActivityForResult()
) { }

Button(
onClick = {
// Intent to open another app
val intent = context.packageManager.getLaunchIntentForPackage("ai.picovoice.porcupine.demo")

// Check if the intent is not null and launch the app
intent?.let {
launcher.launch(intent)
}
},
modifier = Modifier
.padding(16.dp)
.fillMaxWidth(),
content = {
Text(text = "Open Another App")
}
)
}

@Composable
fun MyApp(modifier: Modifier) {
Surface(color = MaterialTheme.colorScheme.background) {
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
OpenAppButton()
}
}
}


Источник: https://stackoverflow.com/questions/781 ... ck-compose
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»