关于 Play 游戏服务排行榜的官方文档使用了已弃用的 startActivityForResult

The official document about Leaderboards of Play Games Services uses deprecated startActivityForResult

提问人:hata 提问时间:9/12/2023 最后编辑:hata 更新时间:9/13/2023 访问量:41

问:

以下代码来自 Google 关于 Play 游戏服务排行榜的官方文档(转换为 Kotlin):

private fun showLeaderboard() {
    PlayGames.getLeaderboardsClient(this).allLeaderboardsIntent
        .addOnSuccessListener { intent ->
            startActivityForResult(intent, 0)
        }
}

Android Studio 说:

“startActivityForResult(Intent!, Int): Unit”已弃用。在 Java 中不推荐使用

我该如何解决这个问题?

Android 谷歌游戏游戏 startactivityforresult

评论


答:

1赞 hata 9/12/2023 #1

您可以使用 ActivityResultContracts 而不是 deprecated 。startActivityForResult

private val leaderboardsResultLauncher = registerForActivityResult(
    ActivityResultContracts.StartActivityForResult()
) { /* do nothing */ }

private fun showLeaderboard() {
    PlayGames.getLeaderboardsClient(this).allLeaderboardsIntent
        .addOnSuccessListener { intent ->
            leaderboardsResultLauncher.launch(intent)
        }
}

排行榜文档说:

请注意,即使没有返回任何结果,我们也必须使用 startActivityForResult,以便 API 可以获取 调用包。

因此,在这种情况下(至于排行榜),您与 .ActivityResultContracts