Привет, я столкнулся с очень простой проблемой, но я не совсем уверен, почему?
Я пытаюсь позвонить напрямую из приложения xamarin forms, не показывая экран dailer, пользователь увидит список своих контактов вНа экране нажмите кнопку, чтобы позвонить, и он сделает прямой вызов, не показывая экран номеронабирателя.
, чтобы добиться этого, я использовал DependencyServic, и я использовал это в качестве своей базы https://www.c -sharpcorner.com/ UploadFile / e4bad6 / code-to-start-call-in-xamarin-forms /
единственное отличие состоит в том, что это PCL, и я использую общую библиотеку
Где я нахожусьпроблема?
Мой интерфейс
public interface IPhoneCall
{
void MakeQuickCall(string PhoneNumber);
}
Мой звонок в Службу зависимости
private void makeCall_Clicked(object sender, EventArgs e)
{
try
{
DependencyService.Get<IPhoneCall>().MakeQuickCall("+xxxxxxxxx");
} catch(Exception ex)
{
DisplayAlert("Alert!!!", ex.Message, "ok");
}
}
МойВызов службы зависимости для Android:
[assembly: Dependency(typeof(PhoneCall_Droid))]
namespace MakeCall.Droid
{
public class PhoneCall_Droid : IPhoneCall
{
public void MakeQuickCall(string PhoneNumber)
{
try
{
var uri = Android.Net.Uri.Parse(string.Format("tel:{0}", PhoneNumber));
var intent = new Intent(Intent.ActionCall, uri);
Xamarin.Forms.Forms.Context.StartActivity(intent);
}
catch (Exception ex)
{
new AlertDialog.Builder(Android.App.Application.Context).SetPositiveButton("OK", (sender, args) =>
{
//User pressed OK
})
.SetMessage(ex.ToString())
.SetTitle("Android Exception")
.Show();
}
}
}
}
Это предупреждение возвращает исключение Невозможно добавить окно - нулевой токен недействителен;ваша деятельность запущена?
Я выглядела несколько таких решений, как это
Intent ActionCall не звонит по телефону в формах xamarin
и это https://forums.xamarin.com/discussion/129166/unable-to-add-window-token-null-is-not-for-an-application-alertbuilder
но я все еще не могу разобрать это,
также я пробовал это в своей Основной деятельности
internal static MainActivity Instance { get; private set; }
, а затем добавил эту строку в OnCreate метод
Instance = this;
и изменил мой метод класса обслуживания зависимостей Android на этот
public void MakeQuickCall(string PhoneNumber)
{
var context = MainActivity.Instance;
try
{
new AlertDialog.Builder(context ).SetPositiveButton("OK", (sender, args) =>
{
//User pressed OK
})
.SetMessage(Android.Net.Uri.Parse(string.Format("tel:{0}", PhoneNumber)).ToString())
.SetTitle("Android Exception")
.Show();
Intent intent = new Intent(Intent.ActionCall, Android.Net.Uri.Parse(string.Format("tel:{0}", PhoneNumber)));
context.StartActivity(intent);
}
catch (Exception ex)
{
new AlertDialog.Builder(Android.App.Application.Context).SetPositiveButton("OK", (sender, args) =>
{
//User pressed OK
})
.SetMessage(ex.ToString())
.SetTitle("Android Exception")
.Show();
}
}
и, выполнив этов сообщении отображается номер телефона, на который поступили вызовы, но он не звонит, а для части вызова все еще отображается то же, что невозможно добавить окно ..,