Programmatically get own phone number in Symbian - symbian

How to get the phone number of the device in Symbian?

According to the GSM specs, only the IMSI is required to be available on the SIM card.
The actual phone number MSISDN is stored on the HLR database in the operator's network and does not need to be available on the SIM card or transmitted to the phone.
So no matter what technology you are using (Symbina, Java ...) you can never count on being able to consistently get your own phone number from the device or SIM. You might be lucky if the operator stores it on the SIM or if the phone provides the user with a possibility to enter it manually, but it does not have to be this way.

As Pat has said, although there are APIs for accessing the "own number" slot on the SIM, rarely in my experience is this slot filled.
The usual strategy for obtaining the phone number for a connected application is to send an SMS as part of a verification process. Either:
Programatically send an SMS from the handset to your server (lots of good SMS gateway interconnect providers out there). The SMS will arrive at your server 'from' the number of the handset (or the SIM to be more correct). Of course the SMS should contain some token so the server can link it with a given session/user.
This has the advantage that you don't need the user to enter their own phone number (which is fraut with subtle difficulties given few folks understand how to format numbers in E.164 format). One disadvantage is that the process can cost your user money (one SMS).
Have the user enter their phone number (web site or on the handset) and connect to your server, passing that phone number. Have the handset then wait for an SMS to arrive that you send from your server. If this SMS does indeed arrive, you have verified the phone number they entered as correct and valid. Obvious disadvantage is that this relies on the user to enter their number correctly - again, given the plethora of ways of writing phone numbers around the world, its not as trivial as it sounds to normalise numbers to E.164....
Alas, neither of these methods are bullet-proof, particularly because SMS is an unconnected transport. Depending on GSM network load, the load of your gateway provider, phase of the moon and direction of window blowing an SMS can take a second to a month to arrive (yes, I do have experience of the latter). The mean delivery time is often in the seconds, but you do have to play with the operation timeout and might have to tweak it on a geographical and GSM network basis.
[And no, don't rely on delivery reports - even more unreliable than SMS delivery]

FYI: Actually i have found this.
http://www3.symbian.com/faq.nsf/AllByDate/100335073FFD8FEF80256E3200571A49?OpenDocument
But the fact is, the phone number is not always stored in SIM. The operator chooses to do it or not!

You can't. Afaik.
Check this discussion:
http://discussion.forum.nokia.com/forum/showthread.php?t=65117

It is not generally possible to get the MSISDN from a Symbian device (or BREW, or any other platform). We've tried.

Related

Send other types of data with the free GPS service?

Is it possible to use the free GPS service to send other types of data such as plain text/XML/HTML??
E.G. systems for taxi companies - each car has in it a box which receives and sends information to and from the controller/ dispatch, back in the office. The driver can view all bookings and accept them, as well as tell the controller when the customer has been picked up and when they have been dropped off.
Is this all possible via the free GPS service? Or would the system's manufacturer have to pay to to rent a private satellite? Or would the system be using something similar to a mobile phone network? I would think it would be one of the first to options, as constant reliable signal is vital.
I know the question above is pretty open, and it's not what I'm too desperate to have answered...I just want to know if it is possible for me to build a device with a GPS receiver and have it send text and XML via the free GPS service?? (I want an admin to operate a team of employees from a browser, like with a taxi fleet management system).
No, GPS is a chip with an antenna that can receive only Location data.
It is not possible to send data via GPS.
All that devices that drivers, taxies, busses, tolling system use, send their data via mobile phone network.
So a device needs such a communication chip and a sim card.
Then you can send what you want.

How to send SMS through "USB" connected mobiles?

I am not a professional developer but I want to develop one project that includes sending message through mobile connected through USB port only... And if possible I want to keep it generalized, like no need for handset model and service provider name.
I don't think it's possible to do this. Certainly at the very least it would depend on the model of mobile in use.
However as an alternative approach there are companies that provide a (paid for, but not expensive) SMS service accessible via a web API. This may suit what you are trying to achieve.
I don't think you will find this easy. Messages can be sent in 2 different modes 'text' or PDU. Support for both modes is not universal across all phones. PDU is the most widely available type on modern phones, but is also the most complex. Not all mobile phones expose a modem to the computer eg. Windows mobile 6.*. Many phones use proprietory software that does not support all commands. Different phones will connect to different COM ports so this will need checking every time, and could prove tricky if there is more than one phone/modem connected. However using just one phone and sending messages in text format after configuring the settings manually the first time is very easy.
See an example here http://www.codeproject.com/Articles/34360/vb-net-AT-commands-to-send-SMS

SMS API that allows you to specify FROM?

I'm wanting to move away from using $phonenumber#$provider domain because it is too limited in usability.
Is there a SMS service with a good API (prefer HTTP/s, XML, JSON) that allows you to send from a specific phone number?
The reason I want it to come from a specific phone number is because I have a Google Voice number I use for my business...
Since you want to use your google voice phone number maybe you just want to send the SMS though google voice. One way to connect w/ google voice is to use the Asterisk software. You would use Asterisk to talk to google voice over the SIP protocal - documented here:
http://michigantelephone.wordpress.com/2010/05/21/how-to-use-google-voice-for-free-outgoing-calls-on-an-asteriskfreepbx-system-the-easy-way/
and
http://eggie5.com/10-installing-asterisk-on-osx
For example I did this and then I interface asterisk from ruby code and can make calls, sms, etc.
Twilio will let you set the FROM number to any Twilio number that you own. Of course, you'd have to give up your Google Voice phone number. I'm pretty sure you won't find any SMS service that allows you to set the FROM number to an arbitrary number (just think of the mess it would cause).
See comment below indicating that the Google Voice number could be ported to Twilio.

Touch iPhone/iPod/iPad Transactions

I heard that there are applications that allow people to do transactions by just touching there iPhones to each other. How is that archive via code in Objective C?
I beleive each phone has to detect the "bump" (using UIAccelermeter) and send an immediate notification of the event ot a server (perhaps with a timestamp and some geolocation info too?). Then the server matches up events that occur at the same moment, to determine the two devices involved. Then the server facilitates the transaction by sending each phone's info to the other.
take a look at the Bump API http://bu.mp/api.html as used in the Bump iPhone application. I haven't used it myself so I cannot say how easy it is to integrate but they claim it only requires you to add ten lines of code.
The way I would do it would be to have each device send the other their UID over bluetooth and then have them both send a message containing the other devices UID and their own UID to the server with a timestamp, then have the server handle the transaction.

Testing SMS code without access to a texting plan

Is there any way to test SMS messaging without having a texting plan?
There isn't any way to setup the equivalent of a mock email server for the purposes of testing an SMS service is there? Are there any other ways to accomplish the task? Perhaps setting up something like a GrandCentral account that can receive text messages?
I am looking to test SMS messages to multiple accounts without having to find multiple people with texting plans and coordinating the effort.
Google now has the answer for which I seek. With the roll-out of their new Google Voice (previously GrandCentral) they added the ability to received text messages to the phone number (which currently is free). While technically somewhat of a text plan, one could theoretically sign up for a few accounts and be able to test multiple phone numbers.
http://www.google.com/voice/
Update (Nov 2010):
Perhaps an even better way to do this now is to use either Tropo (tropo.com) or Twilio (twilio.com). Both of them offer low cost SMS messaging and Tropo is free for development. I've been using Tropo and it's very quick and easy to setup and write and code for.
It would depend on the method of how you're sending out the SMS messages. If you're using the email method (<ten digit number>#<cell provider's doman>) you can fake it with a regular email account that can be purged automatically. If you're using an actual SMS publisher your best bet would be to refactor the design so that you can test that your function gets called the expected number of times, but doesn't actually send the messages. Then when you want to test the production-ready code you actually round up a group of people and try it out.
Having a provider that doesn't charge for incoming text messaging (like US Cellular) comes in handy for situations like that.
SMS text can be done under a few different protocols. I've had success with SMPP using the Easy SMPP .NET library and this java-based SMPP server simulator. It saved me a bunch of overpriced service charges.
you can send email to their phone:
18005551212#txt.att.net (IIRC)