Метод setPackage
Метод setPackage класса
Intent
задаёт имя пакета приложения.
Система не предложит чужие обработчики
для неявного intent.
Часто передают packageName
текущего context или строку нужного приложения.
Синтаксис
intent.setPackage(packageName)
Параметры
| Параметр | Описание |
|---|---|
packageName |
Имя пакета, например com.example.app. |
Пример
Давайте вернёмся к launcher только своего приложения:
import android.content.Intent
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Button
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Button(onClick = {
val intent = Intent(Intent.ACTION_MAIN)
intent.addCategory(Intent.CATEGORY_LAUNCHER)
intent.setPackage(packageName)
startActivity(intent)
}) {
Text(text = "abcde")
}
}
}
}
На экране откроется главная activity только этого приложения.
Пример
Давайте отправим ACTION_SEND только своему пакету:
import android.content.Intent
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Button
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Button(onClick = {
val intent = Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, "12345")
setPackage(packageName)
}
startActivity(intent)
}) {
Text(text = "12345")
}
}
}
}
На экране система предложит только компоненты внутри текущего пакета, если они есть.
Смотрите также
-
метод
setComponent,
точный класс вместо всего пакета -
метод
addCategory,
часто вместе с ACTION_MAIN -
класс
Context,
откуда берут packageName -
класс
Intent,
где объявлен setPackage