Переменная изменяется при сравнении с базой данных Firebase - PullRequest
0 голосов
/ 09 января 2019

Я тестирую приложение на двух мобильных телефонах. У меня есть телефон 1, который отправляет проверочный код, который является действительным номером IMSI SIM-карты, и телефон 2 должен прочитать SMS с телефона 1. Если номер IMSI, который хранится в Firebase, совпадает с номером IMSI телефона 1, сообщение подтверждение будет отправлено обратно.

Ожидаемый результат: переменная imsi будет такой же в методе sendCode и даже в onDataChange.

public void sendCode(View view) {
    final String phoneNumber = ccp.getFullNumberWithPlus();

    SmsManager sms = SmsManager.getDefault();

    List<String> messages = sms.divideMessage("Your IMSI code is: " + imsi);
    Toast.makeText(getApplicationContext(), "Code has been sent to: " + phoneNumber + "." + " You shall be receiving the SMS shortly. ", Toast.LENGTH_LONG).show();
    sendButton.setEnabled(false);

    for (String msg : messages) {
        PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0);
        PendingIntent deliveredIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_DELIVERED"), 0);
        sms.sendTextMessage(phoneNumber, null, msg, sentIntent, deliveredIntent);
        String id = databasePhone.push().getKey();
        PhoneandVerificationCode phone = new PhoneandVerificationCode(phoneNumber, imsi);
        databasePhone.child(id).setValue(phone, imsi);
        Snackbar sb = Snackbar.make(findViewById(android.R.id.content), "Phone successfully added to the database. ", Snackbar.LENGTH_LONG);
        sb.show();
    }
}

Ниже приведена часть, где я получаю сообщение и сравниваю его со значением Firebase:

public class ReceiveBroadcast extends BroadcastReceiver {
    private static final String TAG = "MyBroadcastReceiver";
    String body, number;

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        if(bundle != null) {
            Object[] obj=(Object[])bundle.get("pdus");
            if(obj!=null){
                for(int i=0; i<obj.length; i++){
                    SmsMessage smsMessage = SmsMessage.createFromPdu((byte[])obj[i]);
                    body = smsMessage.getMessageBody().toString();
                    number = smsMessage.getOriginatingAddress().toString();
                }

                databasePhone.orderByKey().limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        for (DataSnapshot readphone : dataSnapshot.getChildren()) {
                            Log.v("tmz", "" + readphone.getKey()); //displays the key for the node
                            String lastphoneNumber = readphone.child("phoneNumber").getValue().toString();
                            String lastIMSINumber = readphone.child("code").getValue().toString();
                            //String lastIMSINumber= "278010401571570";
                            if(lastIMSINumber.equals(imsi)){
                                sendSMSBroadcast();
                                signoutButton.setEnabled(true);
                                statusText.setText("Signed in ");
                                SmsManager sms = SmsManager.getDefault();
                                sms.sendTextMessage(number, null, "Verified " , null, null);
                                Toast.makeText(MainActivity.this, "Phone Number Retrieved "+ lastphoneNumber + " IMSI: " + lastIMSINumber, Toast.LENGTH_LONG).show();
                            } else {
                                Toast.makeText(MainActivity.this, "Code not Verified. Incorrect IMSI. ", Toast.LENGTH_LONG).show();
                            }
                        }
                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {}
                });
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...