我只是想用下面的代码创建简单的联系人。没有编译问题,我可以看到在输出窗口中创建的联系人,但由于某种原因,未在手机上的联系人存储中创建联系人。我在这里错过了什么吗?
以下是我获得remoteHelper类的the link,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using EmulateContacts.Resources;
using System.IO;
using Windows.Phone.PersonalInformation;
using System.Xml.Linq;
using System.Diagnostics;
using System.Threading.Tasks;
using Windows.Storage.Streams;
namespace EmulateContacts
{
public class RemoteContact
{
public string RemoteId { get; set; }
public string GivenName { get; set; }
public string FamilyName { get; set; }
public string DisplayName { get; set; }
public string Email { get; set; }
public string CodeName { get; set; }
public Stream photo { get; set; }
public override string ToString()
{
return String.Format(" {0}\n {1}\n {2}\n {3}\n {4}\n {5}", RemoteId, GivenName, FamilyName, DisplayName, Email, CodeName);
}
}
public partial class MainPage : PhoneApplicationPage
{
ContactStore contactStore;
RemoteIdHelper remoteIdHelper;
public MainPage()
{
InitializeComponent();
}
private void btnAddContacts_Click(object sender, RoutedEventArgs e)
{
StatusTextBlock.Text = "Importing contacts...";
CreateContacts();
StatusTextBlock.Text = "Done.";
}
private async void CreateContacts()
{
try
{
contactStore = await ContactStore.CreateOrOpenAsync(ContactStoreSystemAccessMode.ReadWrite, ContactStoreApplicationAccessMode.ReadOnly);
remoteIdHelper = new RemoteIdHelper();
await remoteIdHelper.SetRemoteIdGuid(contactStore);
int remoteId = 0;
int DN = 0;
int mail = 0;
int n;
n = 10;
for (int i = 0; i < n; i++)
{
Stream myStream = App.GetResourceStream(new Uri(@"Sample.jpg", UriKind.RelativeOrAbsolute)).Stream;
var remoteContact = new RemoteContact
{
RemoteId = remoteId.ToString(),
GivenName = "S",
FamilyName = "BCB",
DisplayName = "CR" + DN,
Email = "Sync" + mail + "@gmail.com",
CodeName = "R",
photo = myStream,
};
remoteId++; DN++; mail++;
await AddContact(remoteContact);
}
}
catch(Exception e)
{
Debug.WriteLine(e.Message);
}
}
public async Task AddContact(RemoteContact remoteContact)
{
// Create a new StoredContact object
StoredContact contact = new StoredContact(contactStore);
// Make sure the remote contact has a RemoteId value
if (remoteContact.RemoteId == null)
{
return;
}
// Use the RemoteIdHelper class to add a GUID to the remote ID to make sure
// the value is unique to this app
contact.RemoteId = await remoteIdHelper.GetTaggedRemoteId(contactStore, remoteContact.RemoteId);
// Set the properties that are exposed directly by the StoredContact class
if (remoteContact.GivenName != null) contact.GivenName = remoteContact.GivenName;
if (remoteContact.FamilyName != null) contact.FamilyName = remoteContact.FamilyName;
// If you don't supply a display name, "[GivenName] [FamilyName]" will be used, but it won't
// automatically be updated when you update GivenName or FamilyName.
if (remoteContact.DisplayName != null) contact.DisplayName = remoteContact.DisplayName;
IInputStream I = remoteContact.photo.AsInputStream();
await contact.SetDisplayPictureAsync(I);
// Call GetPropertiesAsync to get the dictionary of properties that are understood by the phone.
// The keys for this dictionary must be values from the KnownContactProperies enumeration.
IDictionary<string, object> props = await contact.GetPropertiesAsync();
if (remoteContact.Email != null) props.Add(KnownContactProperties.Email, remoteContact.Email);
// Call GetPropertiesAsync to get the dictionary of properties that are specific to your app.
// In this case, the app will set a CodeName property.
IDictionary<string, object> extprops = await contact.GetExtendedPropertiesAsync();
if (remoteContact.CodeName != null) extprops.Add("CodeName", remoteContact.CodeName);
try
{
// Call SaveAsync to save the contact into the store.
await contact.SaveAsync();
Debug.WriteLine(String.Format("Adding:\n{0}", remoteContact.ToString()));
}
catch (Exception)
{
Debug.WriteLine(String.Format("Unable to add contact: {0}", remoteContact.ToString()));
}
}
}
}
答案 0 :(得分:0)
您的联系人可能已创建但不可见,因为Windows Phone 8.1引入了对8.0的重大更改 - 默认情况下不显示来自第三方应用程序的联系人。转到人员应用程序,在第一页(联系人)的顶部,您将拥有&#34;显示所有&#34; /&#34;显示一些帐户&#34;。点按即可管理特定应用的联系人的可见性。