# Listening for incoming SMS

This sample application demonstrates how to listen for an incoming SMS.

1. Implement ResponseCallback interface to receive subsystem initialization status

std::promise<telux::common::ServiceStatus> cbProm = std::promise<telux::common::ServiceStatus>();
    void initResponseCb(telux::common::ServiceStatus status) {
       if(subSystemsStatus == SERVICE_AVAILABLE) {
          std::cout << SmsManager subsystem is ready << std::endl;
       } else if(subSystemsStatus == SERVICE_FAILED) {
          std::cout << SmsManager subsystem initialization failed << std::endl;
       }
       cbProm.set_value(status);
    }
    Copy to clipboard

2. 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;
    }
    Copy to clipboard

3. Get the PhoneFactory and default SmsManager instance

auto &phoneFactory = PhoneFactory::getInstance();
    std::shared_ptr<ISmsManager> smsMgr = phoneFactory.getSmsManager(initResponseCb);
    if(smsMgr == NULL) {
       std::cout << " Failed to get Sms Manager  instance" << std::endl;
       return -1;
    }
    Copy to clipboard

4. Wait for SmsManager subsystem to be ready

telux::common::ServiceStatus status = cbProm.get_future().get();
    if(status != SERVICE_AVAILABLE) {
       std::cout << Unable to initialize Sms Manager subsystem << std::endl;
       return -1;
    }
    Copy to clipboard

5. Instantiate global ISmsListener and register for incoming SMS

auto mySmsListener = std::make_shared<MySmsListener>();
    if(smsMgr) {
       smsMgr->registerListener(mySmsListener);
    }
    Copy to clipboard

6. Wait for incoming SMS

std::cout << " *** wait for MySmsListener::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;
    Copy to clipboard

Last Published: Apr 14, 2026

[Previous Topic
Sending SMS](https://docs.qualcomm.com/bundle/publicresource/80-PF458-1/topics/send_sms.md) [Next Topic
Data](https://docs.qualcomm.com/bundle/publicresource/80-PF458-1/topics/data.md)