Внедрение службы телефонных звонков в Xamarin Android
Я новичок в Xamarin. У меня есть приложение Xamarin Forms, в котором необходимо реализовать службу телефонных звонков для iOS и Android.
Это мой интерфейс под.net общий проект:
using System;
using System.Collections.Generic;
using System.Text;
namespace CallMeMaybe.Services
{
public interface ICallService
{
void MakePhoneCall(string number);
}
}
Это командный метод в модели представления:
private void OnCall(object s)
{
DependencyService.Get<ICallService>().MakePhoneCall(Convert.ToString(s));
}
Это моя служба вызова Android, которая должна реализовывать метод MakePhoneCall
using Android.App;
using Android.Content;
using CallMeMaybe.Droid.Services;
using CallMeMaybe.Services;
using Xamarin.Forms;
[assembly: Dependency(typeof(CallService))]
namespace CallMeMaybe.Droid.Services
{
[Activity(Label = "CallService")]
public class CallService : ICallService
{
public void MakePhoneCall(string number)
{
var uri = Android.Net.Uri.Parse("tel:" + number);
var intent = new Intent(Intent.ActionCall, uri);
//Start Activity here?
}
}
}
Как я могу начать набирать номер в моем методе Android? Это класс обслуживания, а не класс Activity, поэтому я не расширяю Activity.
2 ответа
Прежде всего этот класс не является активом, поэтому вам нужно удалить [Activity(Label = "CallService")]
public void MakePhoneCall(string number)
{
var intent = new Intent(Intent.ActionCall, Android.Net.Uri.Parse(
"tel:" + Uri.EscapeDataString(phoneNumber)));
Android.App.Application.Context.StartActivity(intent);
}
Это намерение откроет приложение вызова и начнет вызов
Выполняя StartActivity(intent)
вы командуете Android, чтобы открыть Calling App Activity и начать вызов
Работает нормально сейчас. Использование контекста приложения для запуска действия
public void MakePhoneCall(string number)
{
var uri = Android.Net.Uri.Parse("tel:" + number);
Intent intent = new Intent(Intent.ActionCall, uri);
intent.AddFlags(ActivityFlags.NewTask);
Android.App.Application.Context.StartActivity(intent);
}