На странице с выделенным кодом в приложении UWP я сериализую объект типа Windows.ApplicationModel.Contacts.Contact
и отправляю результаты в объекте ValueSet обратно в другое приложение, используя метод ProtocolForResultsOperation.ReportCompleted(ValueSet)
(приложение запускается первоначальноеще один).
Вот код:
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
var protocolForResultsArgs = e.Parameter as ProtocolForResultsActivatedEventArgs;
if (protocolForResultsArgs != null)
{
var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
Contact contact = await contactPicker.PickContactAsync();
if (contact != null)
{
string c = JsonConvert.SerializeObject(contact);
ValueSet result = new ValueSet();
result.Add("ContactTaken", c);
protocolForResultsArgs.ProtocolForResultsOperation.ReportCompleted(result);
}
else
{
ValueSet result = new ValueSet();
result.Add("ContactTaken", "No contact selected");
protocolForResultsArgs.ProtocolForResultsOperation.ReportCompleted(result);
}
}
}
Работает на ПК без проблем. Но когда я запускаю его на мобильном устройстве с Windows 10 Mobile (Lumia 640), происходит сбой!
И происходит сбой, даже если я возвращаю что-то отличное от сериализованной строки JSON, т. Е. Также происходит сбой следующим образом:
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
var protocolForResultsArgs = e.Parameter as ProtocolForResultsActivatedEventArgs;
if (protocolForResultsArgs != null)
{
var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
Contact contact = await contactPicker.PickContactAsync();
if (contact != null)
{
string c = JsonConvert.SerializeObject(contact);
ValueSet result = new ValueSet();
result.Add("ContactTaken", "hello world");
protocolForResultsArgs.ProtocolForResultsOperation.ReportCompleted(result);
}
else
{
ValueSet result = new ValueSet();
result.Add("ContactTaken", "No contact selected");
protocolForResultsArgs.ProtocolForResultsOperation.ReportCompleted(result);
}
}
}
Поэтому, я думал, возможно, по какой-то причине не может сериализовать данный объект. Поэтому я попытался показать результаты сериализации в приложении, прежде чем возвращать их в приложение вызывающей стороны, т.е. следующим образом:
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
var protocolForResultsArgs = e.Parameter as ProtocolForResultsActivatedEventArgs;
if (protocolForResultsArgs != null)
{
var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
Contact contact = await contactPicker.PickContactAsync();
if (contact != null)
{
string c = JsonConvert.SerializeObject(contact);
textBlock.text = c;
}
else
{
ValueSet result = new ValueSet();
result.Add("ContactTaken", "No contact selected");
protocolForResultsArgs.ProtocolForResultsOperation.ReportCompleted(result);
}
}
}
Сериализованный текст отображается правильно !!
Любое объяснениепожалуйста