1
我只是想用下面的代碼創建簡單的聯繫人。沒有編譯問題,我可以看到在輸出窗口中創建的聯繫人,但由於某些原因未在手機上的聯繫人存儲中創建聯繫人。我在這裏錯過了什麼嗎?聯繫人創建問題
這是從那裏我得到了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()));
}
}
}
}
終於找到了問題...這是因爲我沒有爲每個創建的聯繫人添加號碼,並且在聯繫人下有一個選項可隱藏/顯示沒有號碼的聯繫人。 – golldy