Skip to Main Content

Java HotSpot Virtual Machine

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

jni class for invoking the function for sending sms in a C# dll

843829Aug 5 2010 — edited Aug 11 2010
I want to call a C# dll (which would send sms from a windows mobile device)
from a java application(the application is using the IBM weme j9 standard)..

The C# dll was developed from the CSharp source code available at the link:
http://phvu.wordpress.com/2009/01/15/sending-sms-message-in-windows-ce/

Would anybody tell me how to access the dll(smart device dll) from the java application using jni?

I want to know how to write jni class for invoking the C# smart device dll from java?
Here is the C# code:
public class Util
    {
        private static bool SendMessage_WM2k3(string destination, string message)
        {
            // SEND = 2, RECEIVE = 1
            IntPtr handle;
            IntPtr intPtr = IntPtr.Zero;

            if (SmsOpen("Microsoft Text SMS Protocol", 2, out handle, ref intPtr) == 0)
            {
                byte[] array = new byte[0x204];
                if (destination.StartsWith("+"))
                {
                    BitConverter.GetBytes(1).CopyTo(array, 0);
                }
                Encoding.Unicode.GetBytes(destination).CopyTo(array, 4);
                int dwProviderSpecificDataSize = 0xa4;
                byte[] buffer2 = new byte[dwProviderSpecificDataSize];
                BitConverter.GetBytes(1).CopyTo(buffer2, 4);    // messageclass = 1

                int messageId;
                if (SmsSendMessage(handle, null, array, null, message, message.Length * 2, buffer2, dwProviderSpecificDataSize, 0, 0, out messageId) == 0)
                {
                    SmsClose(handle);
                    return true;
                }
            }
            return false;
        }

        private static Thread m_SendSMSThread;
        private static string m_sRecipientPhone;
        private static string m_sSMSContent;

        private  void SendSMS()
        {
            bool bSuccess;
            if (Environment.OSVersion.Version.Major < 5) // WM 2k3 and previous
            {
                bSuccess = SendMessage_WM2k3(m_sRecipientPhone, m_sSMSContent);
            }
            else
            {
                bSuccess = SendSMSMessage(m_sRecipientPhone, m_sSMSContent, false) == 0;
            }

            if (bSuccess)
            {
                MessageBox.Show("SMS message was sent successfully!", "SMS",
                                MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
            }
            else
            {
                MessageBox.Show("Error when sending SMS message", "Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
            }
        }

        public static void SendSMS(string recipient, string sContent)
        {
            m_sRecipientPhone = recipient;
            m_sSMSContent = sContent;
            m_SendSMSThread = new Thread(SendSMS);
            m_SendSMSThread.Start();
        }

        [DllImport("cemapi.dll", EntryPoint = "#48", SetLastError = true)]
        private static extern int SendSMSMessage(string RecipientAddress, string MessageText, bool DeliveryReportRequested);

        [DllImport("sms.dll")]
        private static extern int SmsSendMessage(IntPtr smshHandle, byte[] psmsaSMSCAddress, byte[] psmsaDestinationAddress, byte[] pstValidityPeriod, string pbData, int dwDataSize, byte[] pbProviderSpecificData, int dwProviderSpecificDataSize, int smsdeDataEncoding, int dwOptions, out int psmsmidMessageID);

        [DllImport("sms.dll")]
        private static extern int SmsOpen(string ptsMessageProtocol, int dwMessageModes, out IntPtr psmshHandle, ref IntPtr phMessageAvailableEvent);

        [DllImport("sms.dll")]
        private static extern int SmsClose(IntPtr smshHandle);
    }
Please reply asap...

Thanks in advance..
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 8 2010
Added on Aug 5 2010
7 comments
351 views