我有一个xamarin.forms应用程序,它将打开拨号时,我试图实现的标签clicks.What是
我可以在点击标签时打开拨号器。
我可以在我的应用程序中获取通话时长吗?在从XF应用程序移动到dialer.Please guide时,是否有其他解决方法,如计算空闲状态时间
发布于 2019-06-12 19:35:39
安卓部件
我使用了Xamarin essential来移动到拨号器。
获取上一次被叫号码时长的* :
已在名为拨号程序的安卓文件夹中创建了一个依赖项
[assembly: Dependency(typeof(Dialer))]
namespace DialerDemo.Droid
{
class Dialer : ICallerDialer
{
public string GetCallLogs()
{
string queryFilter = String.Format("{0}={1}", CallLog.Calls.Type, (int)CallType.Outgoing);
string querySorter = String.Format("{0} desc ", CallLog.Calls.Date);
ICursor queryData1 = Android.App.Application.Context.ContentResolver.Query(CallLog.Calls.ContentUri, null, queryFilter ,null, querySorter);
int number = queryData1.GetColumnIndex(CallLog.Calls.Number);
int duration1 = queryData1.GetColumnIndex(CallLog.Calls.Duration);
if (queryData1.MoveToFirst() == true)
{
String phNumber = queryData1.GetString(number);
String callDuration = queryData1.GetString(duration1);
return callDuration;
}
return string.Empty;
}
}
}
在我的共享代码中创建了接口。
namespace DialerDemo
{
public interface ICallerDialer
{
string GetCallLogs();
}
}
为了在安卓系统中获取通话时长,在我的MainPage.xaml.cs中,我这样调用它。
var duration = DependencyService.Get<ICallerDialer>().GetCallLogs();
ios Part
在Appdelegate类中,我添加了苹果电话API代码。
public CTCallCenter c { get; set; }
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App());
c = new CTCallCenter();
c.CallEventHandler = delegate (CTCall call)
{
if (call.CallState == call.StateIncoming)
{
}
else if (call.CallState == call.StateDialing)
{
}
else if (call.CallState == call.StateConnected)
{
try
{
MessagingCenter.Send<Object>(new Object(), "CallConnected");
}
catch (Exception ex)
{
}
}
else if (call.CallState == call.StateDisconnected)
{
try {
MessagingCenter.Send<Object>(new Object(), "CallEnded");
}
catch( Exception ex)
{
}
}
};
return base.FinishedLaunching(app, options);
}
对于ios,我根据消息中心的值计算时间差,并在我的共享代码中获得呼叫持续时间,如下所示。
try
{
PhoneDialer.Open(number);
MessagingCenter.Subscribe<Object>(this, "CallConnected", (sender) => {
CallStartTime = DateTime.Parse(DateTime.Now.ToString("hh:mm:ss"));
});
MessagingCenter.Subscribe<Object>(this, "CallEnded", (sender) => {
CallEndTime = DateTime.Parse(DateTime.Now.ToString("hh:mm:ss"));
CallDuration = CallEndTime - CallStartTime;
});
}
catch (FeatureNotSupportedException ex)
{
// Phone Dialer is not supported on this device.
}
https://stackoverflow.com/questions/56494059
复制相似问题