private void PhoneCallEnded(DateTime start, DateTime end) { if (phoneListener != null) { phoneListener.CallEndedEvent -= PhoneCallEnded; } telephonyManager.Listen(phoneListener, PhoneStateListenerFlags.None); phoneListener = null; PhoneCallback.Instance.Complete(true); }
public void PlaceCallWithCallBack(string phoneNumber) { try { var ctx = Xamarin.Forms.Forms.Context; phoneListener = new PhoneCallListener(); telephonyManager = (TelephonyManager)ctx.GetSystemService(Context.TelephonyService); phoneListener.CallEndedEvent += PhoneCallEnded; telephonyManager.Listen(phoneListener, PhoneStateListenerFlags.CallState); var intent = new Intent(Intent.ActionCall); var uri = global::Android.Net.Uri.Parse("tel:" + CoreExtensions.CleanPhoneNumber(phoneNumber)); intent.SetData(uri); ctx.StartActivity(intent); } catch (Exception ex) { var toast = Toast.MakeText(Xamarin.Forms.Forms.Context, "This activity is not supported", ToastLength.Long); toast.Show(); } }