This sample application demonstrates how to listen for an incoming SMS.
1. Implement ISmsListener interface to receive incoming SMS
class MySmsListener : public ISmsListener {
public:
void onIncomingSms(int phoneId, std::shared_ptr<SmsMessage> message) override;
};
void MySmsListener::onIncomingSms(int phoneId, std::shared_ptr<SmsMessage> smsMsg) {
std::cout << "MySmsListener::onIncomingSms from PhoneId : " << phoneId << std::endl;
std::cout << "smsReceived: From : " << smsMsg->toString() << std::endl;
}
2. Get the PhoneFactory and PhoneManager instances
auto &phoneFactory = PhoneFactory::getInstance();
auto phoneManager = phoneFactory.getPhoneManager();
3. Check if telephony subsystem is ready
bool subSystemStatus = phoneManager->isSubsystemReady();
4. Exit the application, if telephony subsystems can not be initialized
if(subSystemStatus) {
std::cout << " *** Subsystem Ready *** " << std::endl;
} else {
std::cout << " *** ERROR - Unable to initialize telephony subsystem" << std::endl;
return 1;
}
5. Instantiate global ISmsListener
auto myPhoneListener = std::make_shared<MyPhoneListener>();
6. Get default SMS Manager instance
std::shared_ptr<ISmsManager> smsMgr = phoneFactory.getSmsManager();
7. Register for incoming SMS
auto mySmsListener = std::make_shared<MySmsListener>();
if(smsMgr) {
smsMgr->registerListener(mySmsListener);
}
8. Wait for incoming SMS
std::cout << " *** wait for MyPhoneListener::onIncomingSms() to be triggered*** " << std::endl;
std::cout << " *** Press enter to exit the application *** " << std::endl;
std::string input;
std::getline(std::cin, input);
return 0;