I have tried to get the SIM card status using the following code:
TInt err = RProperty::Get(KUidSystemCategory, KUidSIMStatusValue, simStatusInt);
The err value vas always KErrNone, so I think the API is working fine, unfortunately if the SIM card was in the phone, the PIN was entered it never returns the ESASimOk value as specified in the SaCls.h TSASIMStatus enum, but always it returned the value 1, which is casted to ESASimNotPresent. When I removed the SIM card it returns the value ESASimRejected.
So I can use it to detect if the SIM card is/isnot in the phone, but the behavior is strange...
Same behaviour was on emulator and phones I have tested. Is this known?