Привет всем, я написал приложение, которое должно прочитать любое новое смс-сообщение и добавить в мою базу данных, но мое приложение прочитало бесконечность сообщения много раз, я не знаю, в чем проблема, и я хочу, когда приложение находится в фоновом режиме или приложение закрыто также прочитано новое смс сообщение, но не прочитано к сожалению пожалуйста кто-нибудь может мне помочь я буду ему очень благодарен
public void refreshSmsInbox() {
ContentResolver contentResolver = getContentResolver();
smsInboxCursor = contentResolver.query(Uri.parse("content://sms/inbox"), null, null, null, null);
int indexBody = smsInboxCursor.getColumnIndex("body");
int indexAddress = smsInboxCursor.getColumnIndex("address");
if (indexBody < 0 || !smsInboxCursor.moveToFirst()) return;
// must check the result to prevent exception
if(smsInboxCursor.moveToFirst())
if (smsInboxCursor.getString(indexAddress).equals(".Samba")) {
smsbody = smsInboxCursor.getString(indexBody);
int end = smsbody.indexOf(' ');
transaction = smsbody.substring(0, end);
if (transaction.equals("دفع")) {
type = "outflow";
smsoutflow();
smsInboxCursor.close();
return;
} else if (transaction.equals("تم")) {
type = "inflow";
smsinflow();
smsInboxCursor.close();
return;
} else if (transaction.equals("سحب")) {
type = "outflowATM";
smsoutflowATM();
smsInboxCursor.close();
return;
}
} smsInboxCursor.close();
}
public void smsoutflow(){
if(type.equals("outflow")) {
myRef11 = FirebaseDatabase.getInstance().getReference("user_account").child("(username)").child("bank_accounts");
int accountnumberstart = smsbody.lastIndexOf(".");
count = accountnumberstart + 5;
accountnumber = smsbody.substring(accountnumberstart + 2, count);
myRef11.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//Take last three number card number
for (DataSnapshot ds : dataSnapshot.getChildren()) {
if (ds.child("account_no").exists()) {
toastMessage(ds.getKey());
String dataaccountOUT = ds.child("account_no").getValue(String.class);
if (Integer.parseInt(accountnumber) == Integer.parseInt(dataaccountOUT)) {
String bank = ds.getKey();
bank2 = bank;
equles = true;
break;
}
}
}
addoutflow(bank2);
return;
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}