Класс NameNotFoundException
Класс NameNotFoundException
из android.content.pm
возникает при getPackageInfo,
getApplicationInfo
или установке по несуществующему package name.
Имя проверяют перед запуском
startActivity
в чужое приложение.
Не путать с
ActivityNotFoundException
для intent без activity.
Пример
Давайте поймаем ошибку при запросе чужого пакета:
import android.content.pm.PackageManager.NameNotFoundException
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val line = try {
packageManager.getPackageInfo("abcde.12345", 0)
"abcde"
} catch (e: NameNotFoundException) {
Log.w("abcde", "12345")
"12345"
}
setContent {
Text(text = line)
}
}
}
PackageManager не находит "abcde.12345",
бросает NameNotFoundException,
на экране остаётся "12345".
Смотрите также
-
класс
ActivityNotFoundException,
если intent не находит activity -
класс
Resources.NotFoundException,
если не найден id ресурса -
класс
Context,
через который доступен packageManager -
метод
startActivity,
к чужому приложению по package