Я пытаюсь разбить строку и сопоставить ее с постоянными строками.Я получил строку адреса, которую я хочу проверить, отправителя, для которой я попытался разбить строки.Для этого я попробовал этот способ.
if (cursor != null) {
cursor.moveToFirst();
try {
while (!cursor.isAfterLast() && !cursor.isBeforeFirst()) {
String messageAddress = cursor.getString(cursor.getColumnIndexOrThrow("address"));
if (isCorporateMessage(messageAddress)) {
String matchString[] = messageAddress.split("-");
if (matchString[0].length() == 2) { //getting exception here I guess
if (matchString[1].toUpperCase().contains("OLA")) {
isFrom = 1;
} else if (matchString[1].toUpperCase().contains("UBR")) {
isFrom = 2;
} else if (matchString[1].toUpperCase().contains("BK")) {
isFrom = 3;
} else if (Utils.isBankMessage(matchString[1].toUpperCase())) {
isFrom = 3;
} else if (cursor.getString(cursor.getColumnIndexOrThrow("body")).toUpperCase().contains("BANK")) {
isFrom = 3;
} else if (matchString[1].toUpperCase().contains("PAYTM")) {
isFrom = 4;
} else if (matchString[2].toUpperCase().contains("VK-iPaytm") || matchString[2].toUpperCase().contains("AD-IPAYTM")) {
isFrom = 4;
} else {
isFrom = 5;
}
// check if message has otp or not
String smsBody = cursor.getString(cursor.getColumnIndexOrThrow("body"));
if (!Utils.isContainAnyTypeOfCode(smsBody)) {
SMSModel sms = new SMSModel();
sms.setId(messageAddress);
sms.setBody(cursor.getString(cursor.getColumnIndexOrThrow("body")).toString());
sms.setAddress(cursor.getString(cursor.getColumnIndexOrThrow("address")).toString());
sms.setType(String.valueOf(isFrom));
long date = cursor.getLong(cursor.getColumnIndex("date"));
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yy", Locale.ENGLISH);
String dateString = formatter.format(new Date(date));
sms.setDate(dateString);
if (isFrom > 0) {
CounterHolder.smsModelArrayList.add(cursor.getString(cursor.getColumnIndexOrThrow("body")).toString());
if (!datePreference.getBoolean("firstDump", false)) {
sms.setBody(cursor.getString(cursor.getColumnIndexOrThrow("body")));
CounterHolder.smsPromArrayList.add(sms);
Log.d("firstDump", "Processed");
} else if (datePreference.getBoolean("firstDump", false)) {
SimpleDateFormat fmtOut = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
if (Utils.isLatestSMS(context, fmtOut.format(new Date(date)))) {
Log.d("sms", "after first dump");
sms.setBody(cursor.getString(cursor.getColumnIndexOrThrow("body")));
CounterHolder.smsPromArrayList.add(sms);
} else {
Log.d("sms", "before first dump");
}
}
}
}
}
}
cursor.moveToNext();
}
cursor.close();
Log.d("myapp", "Count of sms" + CounterHolder.smsPromArrayList.size());
return true;
} catch (Exception e) {
e.printStackTrace();
}
Теперь его бросает java.lang.ArrayIndexOutOfBoundsException: length = 2;индекс = 2 исключения.Как я могу разбить строки и сопоставить без получения исключения?
Пожалуйста, помогите.Спасибо ..