There are at least two ways that I know of to write a Symbian application:
1. J2ME
2. A native application.
My question is, does the SDK/API for either of those methods (or any other method) grant me (at least) read-only access to contact information (names/numbers/etc) on the phone itself? Does this in any way depend on the specific phone being used?
In C++, you can use e.g. the Contacts Model API. There's an example in Forum Nokia.
In J2ME, you need to be working on a phone that has JSR-75. Again, there's an example in Forum Nokia.
Open the default contact database using CContactDatabase::OpenL(). use thus returned database object in TContactIter::NextL() in a loop to fetch the IDs of every contact in the contact book.
Don't forget, as well as native C++ and J2ME (MIDP), you have:
- Python (Example of Contacts access)
- Flash Lite (Example of contacts access)
- Widgets (Example of contacts access)
If you are thinking about lower-end devices which are often S40 devices, MIDP is probably your best bet however.