首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理在app更新即时模式下,当用户点击关闭按钮?

如何处理在app更新即时模式下,当用户点击关闭按钮?
EN

Stack Overflow用户
提问于 2019-05-23 15:37:55
回答 3查看 872关注 0票数 4

根据文档,在应用程序更新API实现中,我使用即时模式。但是在全屏用户界面上有关闭按钮。当用户单击close按钮时,UI将被关闭。在这种情况下,当我不希望用户使用我的应用程序时,如何处理这种即时流程?

EN

回答 3

Stack Overflow用户

发布于 2021-07-16 19:49:33

请试一下这个。

代码语言:javascript
复制
override fun onResume() {
    super.onResume()
    if (listener != null) {
        appUpdateManager.registerListener(listener)
    }
    appUpdateManager
        .appUpdateInfo.addOnSuccessListener { appUpdateInfo ->
            if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)
            ) {
                appUpdateManager.startUpdateFlowForResult(
                    appUpdateInfo,
                    AppUpdateType.IMMEDIATE,
                    this,
                    100
                )
            } else if (appUpdateInfo.updateAvailability()
                == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS
            ) {
                appUpdateManager.startUpdateFlowForResult(
                    appUpdateInfo,
                    IMMEDIATE,
                    this,
                    100
                );
            }
        }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    // super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == 100) {
        when (resultCode) {
            Activity.RESULT_OK -> {
                Toast.makeText(this, "RESULT_OK", Toast.LENGTH_LONG).show()
            }
            Activity.RESULT_CANCELED -> {
                Toast.makeText(this, "RESULT_CANCELED", Toast.LENGTH_LONG).show()
                finish()
            }
            ActivityResult.RESULT_IN_APP_UPDATE_FAILED -> {
                Toast.makeText(this, "RESULT_IN_APP_UPDATE_FAILED", Toast.LENGTH_LONG).show()
                finish()
            }
            else -> {
                Toast.makeText(this, "No result", Toast.LENGTH_LONG).show()
            }
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2019-05-23 15:45:54

我假设你想禁止用户使用你的应用程序,直到他们更新应用程序?

为此,您可以监听更新状态,如果用户取消更新,您可以请求再次开始更新(可能会向用户显示一个对话框/消息,解释为什么需要更新)。

docs

获取更新状态的回调启动更新后,您可以使用onActivityResult()回调来处理更新失败或取消,如下所示。

代码语言:javascript
复制
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (myRequestCode == MY_REQUEST_CODE) {
    if (myRequestCode != RESULT_OK) {
      log("Update flow failed! Result code: " + resultCode);
      // If the update is cancelled or fails,
      // you can request to start the update again.
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2021-06-29 17:15:09

如果用户单击close按钮,您可以在这种情况下获得回调resultCode == Activity.RESULT_CANCELED:-

代码语言:javascript
复制
 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?): Boolean {
    // React to activity result and if request code == ResultActivity.REQUEST_CODE
    if (requestCode == UPDATE_REQUEST_CODE) {
        //when user clicks update button
        if (resultCode == Activity.RESULT_OK) {
            Toast.makeText(mContext, "App download starts...", Toast.LENGTH_LONG).show()
        } else if (resultCode == Activity.RESULT_CANCELED) {
            //if user click on close button
            Toast.makeText(mContext, "App download canceled.", Toast.LENGTH_LONG).show()
           //Here you can do whatever you want (call finish() to close the app.)
        } else if (resultCode == ActivityResult.RESULT_IN_APP_UPDATE_FAILED) {
            Toast.makeText(mContext, "App download failed.", Toast.LENGTH_LONG).show()
        }
        return true
    }
    return false
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56270253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档