Your contact might be created but not visible, as the Windows Phone 8.1 introduces a significant change to 8.0 - the contacts from third-party applications are not shown by default. Go to People App, on the top of the first page (Contacts) you will have "showing all"/"showing some accounts". Tap that to manage visibility of contacts of specific apps.
Contacts creation issues
-
16-07-2023 - |
문제
I am just trying to create simple contacts with the code below. There are no compilation issues, I can see the contacts being created in the output window but for some reason the contacts are not being created in the contact store on the phone. Am I missing something here ?
Here is the link from where I got the remoteHelper class,
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()));
}
}
}
}
해결책
제휴하지 않습니다 StackOverflow