我试图确定何时提供数字列表,然后开始逐个调用它们。因此,流程应如下所示:
for each number in list
ask user if they want to call. If yes:
open dialer
call number
come back to the app
If no:
break the loop
我已经尝试过了:
public partial class MainPage : ContentPage
{
List<string> numbers = new List<string>();
//Consider the list is already filled with different numbers
public MainPage()
{
InitializeComponent();
}
private async Task Button_ClickedAsync(object sender, EventArgs e)
{
bool answer = false;
foreach(var number in numbers)
{
answer = await DisplayAlert("Question?", $"Call {number}?", "Yes", "No");
if (answer)
{
var phoneDialer = CrossMessaging.Current.PhoneDialer;
phoneDialer.MakePhoneCall(number);
}
else
break;
}
}
}
我正在使用Messaging Plugin拨打电话。问题是,当我单击调用Button_ClickedAsync
方法的按钮时,我会调用列表中的第一个数字,此后,当我结束调用并返回到应用程序时,循环将不会继续那。因此,我必须再次单击该按钮,循环将从列表中的第一个数字开始重新开始(如预期的那样)。回到我的应用程序时,如何使它在列表中继续显示,而不必每次都单击按钮?
我也尝试过Intents,但得到的结果相同:
private async Task Button_ClickedAsync(object sender, EventArgs e)
{
bool answer = false;
foreach(var number in numbers)
{
answer = await DisplayAlert("Question?", $"Call {number}?", "Yes", "No");
if (answer)
{
var uri = Android.Net.Uri.Parse($"tel:{number}");
var intent = new Intent(Intent.ActionDial, uri);
Android.App.Application.Context.StartActivity(intent);
}
else
break;
}
答案 0 :(得分:2)
在调用您的应用程序时,它正在进入后台,并在您挂断电话时恢复。如果在将应用程序推送到后台时不保存状态,它将像重新开始一样将其启动。
在Application类中,有一些重写方法,可用于保存状态并在恢复时检查状态。 https://docs.microsoft.com/en-gb/xamarin/xamarin-forms/app-fundamentals/app-lifecycle
因此,我的建议是存储要呼叫的当前电话号码的状态,并在简历上检查是否有以前的电话号码,然后从列表中的该号码继续。