【问题标题】:How to make Xamarin Forms App Auto-Updated?如何使 Xamarin Forms 应用程序自动更新?
【发布时间】:2019-01-29 22:14:24
【问题描述】:

我正在开发一个 xamarin 表单应用程序,它需要在不使用应用程序市场解决方案(Play 商店、应用程序中心等)的情况下自动更新。

我已经进行了大量搜索,从概念上讲,它应该如下所示:

  1. 应用程序应从 Web 服务下载 .apk 文件;
  2. 必须创建某种服务才能删除当前应用版本并安装下载的版本。

当我在浏览器中发出请求时,我的 WebAPI 运行良好。我只需要一些 C# 源代码就可以在 android 设备中下载和安装 .apk 文件。

【问题讨论】:

    标签: c# android xamarin asp.net-web-api xamarin.android


    【解决方案1】:

    正如您所说,首先您下载 de APK,然后,只需启动安装下载文件的意图。您可以调整存储位置和文件名

    public void DownloadFile(string m_uri, string m_filePath)
    {
        var webClient = new WebClient();
    
        webClient.DownloadFileCompleted += (s, e) =>
        {
            string error = e.Error.Message;
            //var bytes = e.Result; // get the downloaded data
            string documentsPath = Android.OS.Environment.ExternalStorageDirectory + "/download/";
    
    
            Intent promptInstall = new Intent(Intent.ActionView).SetDataAndType(Android.Net.Uri.FromFile(new Java.IO.File(Android.OS.Environment.ExternalStorageDirectory + "/download/" + "FileName.apk")), "application/vnd.android.package-archive");
                    promptInstall.AddFlags(ActivityFlags.NewTask);
                    StartActivity(promptInstall);    
                };
    
            var url = new System.Uri(m_uri);
    
            webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback);
            webClient.DownloadFileAsync(url, Android.OS.Environment.ExternalStorageDirectory + "/download/FileName.apk");
    
         }
    }
    

    【讨论】:

    • 感谢您的代码。我面临一个问题:我应该在哪里称呼虚空?
    • 在您的活动中,Splash 或 MainActivity。
    • 我现在在 MainActivity 中执行此操作,但是在调用 StartActivity(promptInstall) 时出现以下异常:“Android.OS.FileUriExposedException:文件:///下载/文件名暴露通过 Intent.getData() 超越应用程序"
    猜你喜欢
    • 2021-05-26
    • 1970-01-01
    • 2018-04-08
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 2019-11-12
    相关资源
    最近更新 更多