Простейшая реализация с использованием Kotlin
fun PackageManager.isAppInstalled(packageName: String): Boolean =
getInstalledApplications(PackageManager.GET_META_DATA)
.firstOrNull { it.packageName == packageName } != null
И назовите это так (поиск приложения Spotify):
packageManager.isAppInstalled("com.spotify.music")
Как уже говорили другие ответы, это невозможно.
Глядя на то, что делается, вы должны изменить сигнатуру function
, чтобы она возвращала тип данных со значением часового. Например, function
может вернуть void*
, и вы можете проверить, что это не NULL
.
Таким образом, параметры для threadStart
станут (void* (*function)(void*), void *arg)
. Это соответствует общему шаблону проектирования, используемому в библиотеках, подобных pthread_create
, который в своем случае имеет параметры (void *(*start_routine) (void *), void *arg)
.
Вы не можете.
Поскольку function
объявлено как void (*function)(void*)
, оно всегда возвращает void, так что вам не нужно.