Внедрение службы телефонных звонков в 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);
    }
Другие вопросы по тегам