以下代码来自Google关于Play游戏服务排行榜的官方文档(已转换为Kotlin):
private fun showLeaderboard() {
PlayGames.getLeaderboardsClient(this).allLeaderboardsIntent
.addOnSuccessListener { intent ->
startActivityForResult(intent, 0)
}
}
Android Studio 说:
“startActivityForResult(Intent, int): Unit”已弃用。
我该如何解决这个问题?
ActivityResultContracts
代替已弃用的 startActivityForResult
。
private val leaderboardsResultLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { /* do nothing */ }
private fun showLeaderboard() {
PlayGames.getLeaderboardsClient(this).allLeaderboardsIntent
.addOnSuccessListener { intent ->
leaderboardsResultLauncher.launch(intent)
}
}
排行榜文件说:
注意,即使没有返回结果,我们也必须使用 startActivityForResult 以便 API 可以获得该活动的身份 调用包。
所以,你的结果与
ActivityResultContracts
无关。