我有一个代码验证器,该代码验证器从电话1向电话2发送一个代码。然后,电话2与数据库进行核对并发送回已验证的代码。
仿真器:我正在使用两个设备作为仿真器(Xiomi和Samsung),它们的API级别均为28。
问题:当Xiomi将代码发送给三星,然后在验证后三星将其发送回去,一切工作都很好,但是反之则行不通。
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();
Toast.makeText(context, body, Toast.LENGTH_SHORT).show();
}
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";
Toast.makeText(getApplicationContext(), imsi, Toast.LENGTH_SHORT).show();
if(lastIMSINumber.equals(body)){
Intent intent = new Intent(MainActivity.this, ReceiveBroadcast.class);
sendBroadcast(intent);
//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, "Imsi does not match!", Toast.LENGTH_LONG).show();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
}
}