Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

SmsMessage.createFromPdu para versões antigas do Android

Estou tentando emular os códigos do curso em aparelhos tanto atuais quanto antigos através dos emuladores disponíveis e percebi que o SmsMessage.createFromPdu só funciona em versões mais novas do Android. Quando altero a compatibilidade do código para versões da API como a 15 por exemplo, ele informa que este método só está disponível a partir da 21 se não me engano. Para versões antigas, encontrei um método que é o SmsMessage.createFromPdu(pdu), mas não sei quais as implicações de usar este método sobre as novas versões de API, pois o mesmo aparece como descontinuado. Qual o procedimento correto quando se deseja que o aplicativo sendo construído funcione tanto para versões antigas quanto novas da API para este caso?

1 resposta
solução!

Olá Clayton,

Nesse caso precisamos tratar os dois casos para que ela funcione corretamente de acordo com a versão da API. Um exemplo seria ter um código com abaixo:

SmsMessage message = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    String format = bundle.getString("format");
    messages = SmsMessage.createFromPdu((byte[]) pdus[0], format);
} else {
    messages = SmsMessage.createFromPdu((byte[]) pdus[0]);
}

Perceba que aí utilizamos o método mais indicado para cada versão da API: se estivermos no Android M ou superior usamos a versão do método que recebe dois parâmetros; caso contrário, utilizamos a versão antiga.