应用程序重启后的OnActivityResult

问题描述 投票:0回答:1

我正在开发一个 .NET Maui 应用程序。它是侧面加载的,不使用 Google Play 商店。

我想通过下载新的 Apk 并在该 Apk 上启动 ACTION_VIEW 活动来更新应用程序。这对于更新应用程序非常有用。

var installIntent = new Intent(Intent.ActionView);
installIntent.AddFlags(ActivityFlags.ClearTop);
installIntent.AddFlags(ActivityFlags.GrantReadUriPermission);

installIntent.SetDataAndType(apkUri?.NormalizeScheme(), GetMimeType());
MainActivity.Current.StartActivityForResult(installIntent, Config.UPDATE_ACTIVITY_REQUEST_CODE );

但是,我需要在应用程序更新或更新取消后采取一些操作。为此,我在 MainActivity 中有以下方法:

    protected override void OnActivityResult(int requestCode, Result resultCode, Intent? data)
    {
        base.OnActivityResult(requestCode, resultCode, data);
        if (requestCode == Config.UPDATE_ACTIVITY_REQUEST_CODE)
        {
            if (resultCode == Result.Ok)
            {
                // Do things after sucessfull update
            }
            else if (resultCode == Result.Canceled)
            {
                // Do things after canceled update
            }
        }
    }

如果用户拒绝更新,则会调用 OnActivityResult,一切都会按预期进行。如果用户接受更新,应用程序将自动重新启动,并且永远不会调用 OnActivityResult。

如何在应用程序重新启动之前或之后调用 OnActivityResult?或者我使用 ActivityResult 走错了路?

c# android android-intent maui
1个回答
0
投票

这是预期的行为:应用程序在更新时被终止,因此您不能使用 onActivityResult 来执行它。一个可能的解决方案是在 AndroidManifest 中使用 ACTION_MY_PACKAGE_REPLACED 注册广播接收器。

© www.soinside.com 2019 - 2024. All rights reserved.