Xamarin.forms 如何将值从依赖项服务传递到共享代码

Xamarin.forms 如何将值从依赖项服务传递到共享代码,xamarin.forms,Xamarin.forms,我正在尝试获取我的xamarin.forms应用程序上的最后一次通话持续时间。在android部分,我使用依赖服务。我可以得到通话持续时间。如何将持续时间传递回共享代码 我在Android上的实现 class Dialer : ICallerDialer { public void GetCallLogs() { string queryFilter = String.Format("{0}={1}", CallLog.Calls.

我正在尝试获取我的xamarin.forms应用程序上的最后一次通话持续时间。在android部分,我使用依赖服务。我可以得到通话持续时间。如何将持续时间传递回共享代码

我在Android上的实现

class Dialer : ICallerDialer
    {
        public void 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);  

                How to pass this to Shared code back?
            }
           return;
        }
    }
我的界面

public interface ICallerDialer
    {
        void GetCallLogs(); 
    }
public interface ICallerDialer
    {
        string GetCallLogs(); 
    }
单击按钮时的依赖项调用

  async void btnCall_Clicked(object sender, System.EventArgs e)
        {         
            DependencyService.Get<ICallerDialer>().GetCallLogs();
           //How to get duration here?
        }
async void btnCall\u已单击(对象发送方,System.EventArgs e)
{         
DependencyService.Get().GetCallLogs();
//如何在这里获得持续时间?
}

非常感谢您的帮助。

只需将方法的返回类型更改为字符串类型即可

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;
        }
    }
接口

public interface ICallerDialer
    {
        void GetCallLogs(); 
    }
public interface ICallerDialer
    {
        string GetCallLogs(); 
    }
单击按钮时的依赖项调用

async void btnCall_Clicked(object sender, System.EventArgs e)
        {         
           var duration = DependencyService.Get<ICallerDialer>().GetCallLogs();

        }
async void btnCall\u已单击(对象发送方,System.EventArgs e)
{         
var duration=DependencyService.Get().GetCallLogs();
}