윈도우폰 세상/Windows Phone

소년포비 2009. 10. 21. 06:20

Windows Mobile을 기반으로 C#으로 프로그래밍하려고 하니 스마트폰의 전화번호를 가져오는데
안되더군요.. 이것 저것 많이 해보았습니다.

결국, 다수의 삽질과 SIM에서 전화번호를 가져오는 코드가 있더군요.

아래 코드를 사용하시면 됩니다.

    public enum AddressType
    {
       /// <summary>Unknown phone number type.</summary>
       
        /// <summary>International phone number.</summary>
       International,
        /// <summary>National phone number.</summary>
       National,
        /// <summary>Network-specific number.</summary>
        NetworkSpecific,
        <summary>Subscriber phone number.</summary>
        Subscriber,
       /// <summary>Alphanumeric phone number.</summary>
        Alphanumeric,
       /// <summary>Abbreviated phone number.</summary>
       Abbreviated
    }

    public struct PhoneAddress
   {
        /// <summary>The address type.</summary>
       public AddressType AddressType;
        <summary>The phone number in string format.</summary>
        public String Address;
    }

   public class Sim
    {
       [DllImport("sms.dll")]
        private static extern IntPtr SmsGetPhoneNumber(IntPtr

        unsafe public static PhoneAddress GetPhoneNumber()
       {
            phoneaddr = new PhoneAddress();

           Byte[] buffer = new Byte[516];
           fixed (byte* pAddr = buffer)
           {
                IntPtr = SmsGetPhoneNumber((IntPtr)pAddr);
                (res != IntPtr.Zero)
                   throw new Exception("Could not get phone number from

                byte* = pAddr;
                = (AddressType)Marshal.ReadInt32((IntPtr)pCurrent);
                += Marshal.SizeOf(phoneaddr.AddressType);
                = Marshal.PtrToStringUni((IntPtr)pCurrent);
            }

           return phoneaddr;
       }
    }