【发布时间】:2021-07-07 15:15:33
【问题描述】:
我已经为我的工作在 Xamarin.forms 应用程序上工作了大约一年。我从对 xamarin.forms 框架几乎一无所知的前任手中接手。
我有过一些小问题,但我一般都能过得去。
但是在这里我卡在了一些应该是基本的东西上。 该应用程序分为两部分,一个主要用于启动事物(从未接触过它,因为它并没有真正改变应用程序的功能),而另一个是 if 的本质。
现在我正在尝试从应用中心获取应用更新。为了能够让用户在应用程序中下载,我需要制作一条自定义更新消息。好吧,我想,但问题是:我无法让它使用 displayalert 功能。
这是我正在处理的部分:
using System;
using Android.Support.V4.App;
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using System.Timers;
using Picking.Droid;
using Picking.Droid.Helpers;
using Xamarin.Essentials;
using Plugin.CurrentActivity;
using Android.Support.V4.Content;
using Android;
using Microsoft.AppCenter;
using Microsoft.AppCenter.Analytics;
using Microsoft.AppCenter.Crashes;
using Microsoft.AppCenter.Distribute;
using Android.Content;
using SharpCifs.Smb;
using System.Threading.Tasks;
protected override void OnCreate(Bundle savedInstanceState)
{
Distribute.SetEnabledForDebuggableBuild(true);
Distribute.ReleaseAvailable = OnReleaseAvailable;
AppCenter.Start("android=[top Secret Code]",
typeof(Analytics), typeof(Crashes), typeof(Distribute));
Distribute.CheckForUpdate();
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
CrossCurrentActivity.Current.Init(this, savedInstanceState);
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
}
bool OnReleaseAvailable(ReleaseDetails releaseDetails)
{
// Look at releaseDetails public properties to get version information, release notes text or release notes URL
string versionName = releaseDetails.ShortVersion;
string versionCodeOrBuildNumber = releaseDetails.Version;
string releaseNotes = releaseDetails.ReleaseNotes;
Uri releaseNotesUrl = releaseDetails.ReleaseNotesUrl;
// custom dialog
var title = "Version " + versionName + " available!";
Task answer;
// On mandatory update, user can't postpone
if (releaseDetails.MandatoryUpdate)
{
answer = DisplayAlert(title, releaseNotes, "Download and Install");
}
else
{
answer = Current.MainPage.DisplayAlert(title, releaseNotes, "Download and Install", "Maybe tomorrow...");
}
answer.ContinueWith((task) =>
{
// If mandatory or if answer was positive
if (releaseDetails.MandatoryUpdate || (task as Task<bool>).Result)
{
// Notify SDK that user selected update
Distribute.NotifyUpdateAction(UpdateAction.Update);
}
else
{
// Notify SDK that user selected postpone (for 1 day)
// This method call is ignored by the SDK if the update is mandatory
Distribute.NotifyUpdateAction(UpdateAction.Postpone);
}
});
// Return true if you're using your own dialog, false otherwise
return true;
}
我唯一的问题是应用程序的最后一部分,在“OnReleaseAvailable”中,我找不到该部分的 displayAlert。我尝试引用当前、主页、活动,但没有。
感谢您的帮助。
为了清楚起见:红色是我通常使用的 xamarinforms,蓝色是我现在工作的地方,它基本上只是进行基本启动,然后让 xamarin 表单处理其余部分。我在 MainActivity.cs 中
【问题讨论】:
-
DisplayAlert 是 Page 方法,因此它仅适用于 XF 页面的上下文。您正在尝试从 Android MainActivity 执行它。您可以尝试绑定到 App.Current.MainPage 以获取正确的上下文
-
@Jason 就是这样。您能否将其发布为答案,以便我将其标记为答案?非常感谢;-)
标签: c# android xamarin.forms