Has*_*Ali 6 android kotlin onactivityresult
我正在为 android使用应用程序内更新,并且根据文档,他们使用 onActivityResult 来处理应用程序行为,以防更新中断。
这是从我的片段调用的我的函数:
private fun startImmediateUpdate(appUpdateInfo: AppUpdateInfo) {
appUpdateManager.startUpdateFlowForResult(
appUpdateInfo,
AppUpdateType.IMMEDIATE,
requireActivity(),
Constants.CODES.APP_UPDATE_REQUEST_CODE
)
}
Run Code Online (Sandbox Code Playgroud)
这就是我处理父活动结果的方式
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode) {
Constants.CODES.APP_UPDATE_REQUEST_CODE -> {
if (resultCode != RESULT_OK || resultCode == RESULT_CANCELED || resultCode == ActivityResult.RESULT_IN_APP_UPDATE_FAILED) {
//Do whatever i want to
}
}
}
super.onActivityResult(requestCode, resultCode, data)
}
Run Code Online (Sandbox Code Playgroud)
现在 super.onActivityResult(requestCode, resultCode, data) 已弃用。目前一切正常,但我担心如果应用程序完全消失,应用程序会崩溃
我可以做些什么来替换 onActivityResult()?我查看了 registerForActivityResult() 但找不到适合我的用例的任何内容。
Sve*_*obs 11
更新(2023 年 6 月):
自2023 年 5 月发布的应用内更新库2.1.0版本以来,终于添加了接受 an的startUpdateFlowForResult重载。IntentSenderForResultStarter
旧答案(2.1.0版本之前):
正如 Ian Lake提到的,有一个使用IntentSenderForResultStarter 的解决方案。
首先在您的 Activity 中创建一个ActivityResultLauncher:
private val updateFlowResultLauncher =
registerForActivityResult(
ActivityResultContracts.StartIntentSenderForResult(),
) { result ->
if (result.resultCode == RESULT_OK) {
// Handle successful app update
}
}
Run Code Online (Sandbox Code Playgroud)
现在开始更新流程,如下所示:
fun startUpdate(
appUpdateInfo: AppUpdateInfo,
requestCode: Int,
) {
val starter =
IntentSenderForResultStarter { intent, _, fillInIntent, flagsMask, flagsValues, _, _ ->
val request = IntentSenderRequest.Builder(intent)
.setFillInIntent(fillInIntent)
.setFlags(flagsValues, flagsMask)
.build()
updateFlowResultLauncher.launch(request)
}
appUpdateManager.startUpdateFlowForResult(
appUpdateInfo,
AppUpdateType.FLEXIBLE,
starter,
requestCode,
)
}
Run Code Online (Sandbox Code Playgroud)
我有同样的问题,我发现一种可能性是重写以使用startUpdateFlow 调用。
就我个人而言,我认为这是不值得做的,所以我会忽略这个特定的弃用警告,并等待/希望 Android/Google 制定一个我们可以传递 an 的方法ActivityResultLauncher。
| 归档时间: |
|
| 查看次数: |
2933 次 |
| 最近记录: |