Olá! Fiz a aula junto com o professor, e meus códigos ficaram assim:
SMSReceiver.java:
package br.com.kyomen.agenda.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.telephony.SmsMessage;
import android.widget.Toast;
import br.com.kyomen.agenda.R;
import br.com.kyomen.agenda.dao.AlunoDAO;
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Object[] pdus = (Object[]) intent.getSerializableExtra("pdus");
byte[] pdu = (byte[]) pdus[0];
String formato = intent.getStringExtra("format");
SmsMessage sms = SmsMessage.createFromPdu(pdu, formato);
String telefone = sms.getDisplayOriginatingAddress();
AlunoDAO dao = new AlunoDAO(context);
if (dao.ehAluno(telefone)) {
Toast.makeText(context, "Chegou um SMS de um(a) aluno(a)!", Toast.LENGTH_SHORT).show();
MediaPlayer mp = MediaPlayer.create(context, R.raw.msg);
mp.start();
}
dao.close();
}
}
Método ehAluno dentro do DAO:
public boolean ehAluno(String telefone) {
SQLiteDatabase db = getReadableDatabase();
Cursor c = db.rawQuery("SELECT * FROM Alunos WHERE telefone = ?", new String[]{telefone});
int resultados = c.getCount();
c.close();
return resultados > 0;
}
Tag receiver dentro de AndroidManifest (coloquei o uses-permission):
<receiver android:name=".receiver.SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
Os erros são os seguintes:
No SMSReceiver, createFromPdu acusa erro por conta da API e sugere três autofixes (Add @RequiresApi(M) Annotation, Add @TargetApi(M) Annotation, Surround with if (VERSION.SDK_INT >= VERSION_CODES.M) {...}
). Gostaria de saber qual é o autofix correto para esse problema.
No DAO, o texto sql acusa <expr> expected, got '?'
No Manifest, nenhum erro.
Como posso resolver tudo? Obrigado desde já!