Se você quer desenvolver um aplicativo Java que fique esperando alguém enviar um SMS para você e então fazer alguma ação (como por exemplo responder automaticamente), saiba que não é possível.

Bem, é possível, mas a API do J2ME só permite receber SMS que sejam direcionadas à aplicação, ou seja, foram enviadas para a porta que a aplicação está escutando. SMSs comuns são enviadas sem número de porta, e aplicações J2ME não podem recebê-las. E SMSs com número de porta especificado só podem ser enviados a partir de… outra aplicação J2ME! Não dá pra setar número de porta com o aplicativo de SMS que já vem no celular.

O sonhado foguete de usar um celular boqueta para receber SMS de clientes, processar e retornar uma resposta não irá acontecer.

Levei mais de uma hora buscando na net, sem acreditar, até que baixei a documentação oficial da API WMA 1.1, e li com os próprios olhos, aplicações Java só poderão receber SMS com números de porta.

Pôxa, por que não permitir esta funcionalidade, com autorização do usuário? São coisinhas como esta que fazem ficar difícil usar Java…

Mas há uma saída: algum fabricante pode ter implementado essa funcionalidade em SDKs proprietárias. Se tiver paciência de buscar no site do fabricante….

Segue o link para a especificação da WMA 1.1:

https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_JCP-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=7339-wma-1.1-mr-spec-oth-JSpec@CDS-CDS_JCP