Невозможно вызвать IntentSenderRequest.Builder() с логическим значениемAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно вызвать IntentSenderRequest.Builder() с логическим значением

Сообщение Anonymous »

Этот код вызывает следующую ошибку компиляции:
val intentSenderRequest = IntentSenderRequest.Builder(intentSender).build()

Ни один из следующих кандидатов не подходит: конструктор(intentSender: IntentSender): IntentSenderRequest. Конструктор построителя (pendingIntent: PendingIntent): IntentSenderRequest. Строитель

Изображение
Полный код для получения дополнительной информации:
package com.byteflipper.ffsensitivities.playcore

import android.content.Context
import android.content.pm.PackageManager
import android.util.Log
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.IntentSenderRequest
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
import com.google.android.play.core.appupdate.AppUpdateManagerFactory
import com.google.android.play.core.appupdate.AppUpdateOptions
import com.google.android.play.core.install.model.AppUpdateType
import com.google.android.play.core.install.model.UpdateAvailability
import kotlinx.coroutines.tasks.await

class InAppUpdateManager(
private val context: Context,
private val updateStrategy: UpdateStrategy = UpdateStrategy.AUTO,
private val updateResultLauncher: ActivityResultLauncher
) {
private val appUpdateManager = AppUpdateManagerFactory.create(context)
private val currentVersionCode = getCurrentVersionCode(context)
val updateState: MutableState = mutableStateOf(UpdateState.Idle)

enum class UpdateStrategy {
AUTO, FLEXIBLE, IMMEDIATE
}

sealed class UpdateState {
object Idle : UpdateState()
object Checking : UpdateState()
object Downloading : UpdateState()
object Downloaded : UpdateState()
data class Error(val message: String) : UpdateState()
}

private fun getCurrentVersionCode(context: Context): Long {
return try {
val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0)
packageInfo.longVersionCode
} catch (e: PackageManager.NameNotFoundException) {
Log.e("InAppUpdateManager", "Не удалось получить версию приложения", e)
0L
}
}

private suspend fun fetchAppUpdateInfo(): com.google.android.play.core.appupdate.AppUpdateInfo? {
return try {
appUpdateManager.appUpdateInfo.await()
} catch (e: Exception) {
Log.e("InAppUpdateManager", "Ошибка получения информации об обновлении", e)
null
}
}

private fun shouldStartUpdate(appUpdateInfo: com.google.android.play.core.appupdate.AppUpdateInfo, updateType: Int): Boolean {
return appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE &&
appUpdateInfo.isUpdateTypeAllowed(updateType)
}

private fun determineUpdateType(availableVersionCode: Long): Int {
return when (updateStrategy) {
UpdateStrategy.FLEXIBLE -> AppUpdateType.FLEXIBLE
UpdateStrategy.IMMEDIATE -> AppUpdateType.IMMEDIATE
UpdateStrategy.AUTO -> {
val versionDifference = availableVersionCode - currentVersionCode
when {
versionDifference > 3 -> AppUpdateType.IMMEDIATE
else -> AppUpdateType.FLEXIBLE
}
}
}
}

@Composable
fun CheckForUpdates() {
LaunchedEffect(Unit) {
updateState.value = UpdateState.Checking
val appUpdateInfo = fetchAppUpdateInfo()
if (appUpdateInfo != null) {
val updateType = determineUpdateType(appUpdateInfo.availableVersionCode().toLong())
if (shouldStartUpdate(appUpdateInfo, updateType)) {
startUpdate(appUpdateInfo, updateType)
} else {
updateState.value = UpdateState.Idle
}
} else {
updateState.value = UpdateState.Error("Не удалось получить информацию об обновлении.")
}
}
}

private fun startUpdate(appUpdateInfo: com.google.android.play.core.appupdate.AppUpdateInfo, updateType: Int) {
try {
val updateOptions = AppUpdateOptions.newBuilder(updateType).build()
val intentSender = appUpdateManager.startUpdateFlowForResult(
appUpdateInfo,
context as androidx.activity.ComponentActivity,
updateOptions,
UPDATE_REQUEST_CODE
)
val intentSenderRequest = IntentSenderRequest.Builder(intentSender).build()
updateResultLauncher.launch(intentSenderRequest)
updateState.value = UpdateState.Downloading
} catch (e: Exception) {
Log.e("InAppUpdateManager", "Ошибка при запуске обновления", e)
updateState.value = UpdateState.Error(e.message ?: "Неизвестная ошибка")
}
}

fun completeUpdate() {
appUpdateManager.completeUpdate()
updateState.value = UpdateState.Downloaded
}

companion object {
const val UPDATE_REQUEST_CODE = 100
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... -a-boolean
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Невозможно вызвать IntentSenderRequest.Builder() с логическим значением
    Anonymous » » в форуме Android
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Val IntentSenderRequest = IntentSenderRequest.Builder(intentSender).build()
    Anonymous » » в форуме Android
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Не удалось найти http-builder-0.7.2.jar (org.codehaus.groovy.modules.http-builder:http-builder:0.7.2)
    Anonymous » » в форуме Android
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous
  • Не удалось найти http-builder-0.7.2.jar (org.codehaus.groovy.modules.http-builder:http-builder:0.7.2)
    Anonymous » » в форуме Android
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Не удалось найти http-builder-0.7.2.jar (org.codehaus.groovy.modules.http-builder:http-builder:0.7.2)
    Anonymous » » в форуме Android
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous

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