У меня проблема с пользовательским слушателем. Моя основная задача - передать входящие смс из моего класса приемника в основной вид деятельности. К сожалению, это не работает, и я не понимаю, почему.
My MainActivity:
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
keepFullscreen();
countdownTimer = findViewById(R.id.countdown_text);
setContentView(R.layout.activity_main);
SmsReceiver smsReceiver = new SmsReceiver();
smsReceiver.setOnSmsReceivedListener(new SmsReceiver.OnSmsReceivedListener() {
@Override
public void onSmsReceived(String sender, String message) {
Toast.makeText(MainActivity.this, message + " von " + sender, Toast.LENGTH_SHORT).show();
//setIngoingSms(sender, message);
}
});
// and so on...
Я также настроил свой BroadcastReceiver, но он не будет работать, так как слушатель всегда null:
public class SmsReceiver extends BroadcastReceiver {
// Set variables
private static final String TAG = SmsReceiver.class.getSimpleName();
public static final String pdu_type = "pdus";
public interface OnSmsReceivedListener {
public void onSmsReceived(String sender, String message);
}
private OnSmsReceivedListener listener;
@RequiresApi(api = Build.VERSION_CODES.M)
public SmsReceiver() {
this.listener = null;
}
public void setOnSmsReceivedListener(OnSmsReceivedListener listener) {
this.listener = listener;
}
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onReceive(Context context, Intent intent){
String str = "";
String snd = "";
if(intent.getAction() != null){
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get(pdu_type);
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i], bundle.getString("format"));
snd = messages[i].getOriginatingAddress();
str+= messages[i].getMessageBody();
if (listener != null) {
listener.onSmsReceived(snd, str);
}
}
}
}
}
}
Очень надеюсь, что вы мне поможете. Спасибо!