Обновление в приложении не работает, несмотря на наличие обновления

#android #android-studio #kotlin #google-play

Вопрос:

Я пытаюсь реализовать обновление в приложении в своем приложении, чтобы при появлении нового обновления пользователь мог его увидеть.

Я тщательно выполнил все перечисленные здесь шаги — https://developer.android.com/guide/playcore/in-app-updates/kotlin-java

Но по некоторым причинам диалоговое окно для обновления не отображается…

Активность.тыс. т

 override fun onCreate(savedInstanceState: Bundle?) {

    setTheme(R.style.Theme_DirectMusicPlayer)
    super.onCreate(savedInstanceState)
    initViews()
    setContentView(binding.root)
}


private fun initViews(){
    checkForUpdate()
}

 private fun checkForUpdate(){

    appUpdateManager = AppUpdateManagerFactory.create(this)

    // Returns an intent object that you use to check for an update.
    val appUpdateInfoTask = appUpdateManager.appUpdateInfo

    // Checks that the platform will allow the specified type of update.

    appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->

        if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE

           {

            // Request the update.
            appUpdateManager.startUpdateFlowForResult(
                // Pass the intent that is returned by 'getAppUpdateInfo()'.
                appUpdateInfo,
                // Or 'AppUpdateType.FLEXIBLE' for flexible updates.
                AppUpdateType.FLEXIBLE,
                // The current activity making the update request.
                this,
                // Include a request code to later monitor this update request.
                Constants.MY_REQUEST_CODE
            )
        }
        else{
            Toast.makeText(this, "No update yet", Toast.LENGTH_LONG).show()
        }
    }
    //Create a listener to track request state updates.
    installStateUpdatedListener = InstallStateUpdatedListener { state ->

        when (state.installStatus()) {

            InstallStatus.DOWNLOADING -> {
                val bytesDownloaded = state.bytesDownloaded()
                val totalBytesToDownload = state.totalBytesToDownload()

                //show download progress
            }

            InstallStatus.DOWNLOADED -> {
                //show SnackBar
                showInstallSnackBar()
            }
            InstallStatus.INSTALLED -> {
                appUpdateManager.unregisterListener(installStateUpdatedListener)
            }

            else -> {
                //do something
            }
        }
    }

    // Before starting an update, register a listener for updates.
    appUpdateManager.registerListener(installStateUpdatedListener)


}


private fun showInstallSnackBar(){

    Snackbar.make(
        findViewById(android.R.id.content),
        "An update has just been downloaded.",
        Snackbar.LENGTH_INDEFINITE
    ).apply {
        setAction("RESTART") { appUpdateManager.completeUpdate() }
        setActionTextColor(ContextCompat.getColor(this@PermissionActivity, R.color.app_name_color))
        show()
    }

}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == Constants.MY_REQUEST_CODE) {
        if (resultCode != AppCompatActivity.RESULT_OK) {
            // If the update is cancelled or fails,
            // you can request to start the update again
            checkForUpdate()
        }
    }
}

override fun onResume() {
    super.onResume()

    appUpdateManager
        .appUpdateInfo
        .addOnSuccessListener { appUpdateInfo ->
            // If the update is downloaded but not installed,
            // notify the user to complete the update.
            if (appUpdateInfo.installStatus() == InstallStatus.DOWNLOADED) {
                showInstallSnackBar()
            }
        }
  }
}
 

Чтобы проверить:

  1. Я загрузил на тестовый трек (с кодом обновления в приложении)
  2. Затем я загрузил тот же пакет приложений выше с общедоступной ссылкой
  3. Затем в своем коде я увеличил код версии до более высокой, чем на шаге 1
  4. Затем я сгенерировал другой подписанный пакет и загрузил его на тот же внутренний тестовый трек.
  5. Теперь я скопировал URL-адрес приложения на шаге 4 и посетил его…Там я увидел «Обновление» — что означает, что доступно обновление. (Я не нажимал на обновление в playstore)
  6. Я закрыл PlayStore и открыл свое приложение…Я думал, что появится диалоговое окно обновления в приложении, но ничего не отображается… Но в playstore написано «Обновить».

Я также очистил кэш и ждал несколько часов, но ничего.

Я также не получаю всплывающее сообщение, в котором я установил «Нет обновления», когда обновления еще нет…Что показывает, что обновление, безусловно, есть…но диалоговое окно обновления от Google не отображается.

Комментарии:

1. та же проблема и здесь. для меня это действительно сработало однажды на одном из моих устройств. с другой стороны, появилось диалоговое окно, но обновление завершилось с некоторой ошибкой, и мне пришлось перезагрузить устройство, чтобы установить его вообще. после этого у меня возникла та же проблема, что и у вас

2. У меня та же проблема, вы нашли решение?