手机管家 v7.2.0版本的 MD5 值为:dd92ba71696e35a4b841cd1b5de53cd3
以下内容为反编译后的 sl.java 源代码,内容仅作参考
package tcs;
import android.telephony.PhoneNumberUtils;
import com.tencent.kingkong.database.SQLiteDatabase;
public class sl extends PhoneNumberUtils {
public static final int ddc = 8;
public static final String[] ddm = {"-", "+86", qs.bUw, qs.bUx, qs.bUp, qs.bUo, qs.bUq, qs.bUt, qs.bUs, qs.bUu};
public static String hv(String str) {
if (str != null && str.length() > 2) {
for (String str2 : ddm) {
if (str.startsWith(str2)) {
return str.substring(str2.length());
}
}
return str;
}
return str;
}
public static boolean hw(String str) {
if (!str.endsWith("*") || str.length() <= 4) {
return false;
}
String substring = str.substring(0, str.length() - 1);
for (String str2 : ddm) {
if (substring.equals(str2)) {
return true;
}
}
return false;
}
public static boolean hx(String str) {
for (String str2 : ddm) {
if (str.startsWith(str2)) {
return true;
}
}
return false;
}
public static String hy(String str) {
if (str != null) {
return stripSeparators(str).replace("-", SQLiteDatabase.KeyEmpty).replace(" ", SQLiteDatabase.KeyEmpty).trim();
}
return str;
}
public static String formatNumber(String str) {
return hv(hy(str));
}
public static boolean hz(String str) {
for (int length = str.length() - 1; length >= 0; length--) {
if (!isISODigit(str.charAt(length))) {
return false;
}
}
return true;
}
public static String hA(String str) {
return v(hB(hv(str)), 8);
}
public static String hB(String str) {
boolean z = false;
if (str == null) {
return null;
}
int length = str.length();
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++) {
char charAt = str.charAt(i);
if (charAt == '+') {
if (z) {
continue;
} else {
z = true;
}
}
if (isDialable(charAt)) {
sb.append(charAt);
} else if (isStartsPostDial(charAt)) {
break;
}
}
return sb.toString();
}
private static String v(String str, int i) {
if (str == null) {
return null;
}
StringBuilder sb = new StringBuilder(i);
int length = str.length();
for (int i2 = length - 1; i2 >= 0 && length - i2 <= i; i2--) {
sb.append(str.charAt(i2));
}
return sb.toString();
}
public static boolean X(String str, String str2) {
return aa(hv(str), hv(str2));
}
public static boolean aa(String str, String str2) {
int i;
int i2;
int i3;
int i4;
int i5;
boolean z;
int i6;
int i7;
boolean z2;
int i8;
int i9;
int i10;
if (str == null || str2 == null) {
return str == null && str2 == null;
}
if (str.length() == 0 || str2.length() == 0) {
return false;
}
int hC = hC(str);
int hC2 = hC(str2);
int i11 = 0;
int i12 = 0;
int i13 = 0;
while (hC >= 0 && hC2 >= 0) {
char charAt = str.charAt(hC);
if (isDialable(charAt)) {
i5 = hC;
i4 = i12;
z = false;
} else {
i5 = hC - 1;
i4 = i12 + 1;
z = true;
}
char charAt2 = str2.charAt(hC2);
if (isDialable(charAt2)) {
boolean z3 = z;
i6 = hC2;
i7 = i11;
z2 = z3;
} else {
i6 = hC2 - 1;
i7 = i11 + 1;
z2 = true;
}
if (!z2) {
if (charAt2 != charAt && charAt != 'N' && charAt2 != 'N') {
i3 = i5;
i = i6;
i2 = i7;
break;
}
int i14 = i5 - 1;
i9 = i6 - 1;
i10 = i13 + 1;
i8 = i14;
} else {
int i15 = i13;
i8 = i5;
i9 = i6;
i10 = i15;
}
i11 = i7;
hC2 = i9;
int i16 = i10;
i12 = i4;
hC = i8;
i13 = i16;
}
i = hC2;
int i17 = i12;
i2 = i11;
i3 = hC;
i4 = i17;
if (i13 < 8) {
int length = str.length() - i4;
return length == str2.length() - i2 && length == i13;
}
if (i13 >= 8 && (i3 < 0 || i < 0)) {
return true;
}
if (A(str, i3 + 1) && A(str2, i + 1)) {
return true;
}
if (B(str, i3 + 1) && D(str2, i + 1)) {
return true;
}
return B(str2, i + 1) && D(str, i3 + 1);
}
private static int hC(String str) {
int length = str.length();
int D = D(str.indexOf(44), str.indexOf(59));
return D < 0 ? length - 1 : D - 1;
}
private static int D(int i, int i2) {
if (i >= 0 && i2 >= 0) {
return i < i2 ? i : i2;
}
if (i < 0) {
if (i2 >= 0) {
return i2;
}
return -1;
}
return i;
}
private static boolean A(String str, int i) {
boolean z = true;
char c = 0;
for (int i2 = 0; i2 < i; i2++) {
char charAt = str.charAt(i2);
switch (c) {
case 0:
if (charAt == '+') {
c = 1;
break;
} else if (charAt == '0') {
c = 2;
break;
} else {
if (e(charAt)) {
return false;
}
break;
}
case 1:
case 3:
default:
if (e(charAt)) {
return false;
}
break;
case 2:
if (charAt == '0') {
c = 3;
break;
} else if (charAt == '1') {
c = 4;
break;
} else {
if (e(charAt)) {
return false;
}
break;
}
case 4:
if (charAt == '1') {
c = 5;
break;
} else {
if (e(charAt)) {
return false;
}
break;
}
}
}
if (c != 1 && c != 3 && c != 5) {
z = false;
}
return z;
}
private static boolean B(String str, int i) {
boolean z = false;
for (int i2 = 0; i2 < i; i2++) {
char charAt = str.charAt(i2);
if (charAt == '0' && !z) {
z = true;
} else if (e(charAt)) {
return false;
}
}
return z;
}
private static boolean D(String str, int i) {
boolean z = true;
int i2 = 0;
for (int i3 = 0; i3 < i; i3++) {
char charAt = str.charAt(i3);
switch (i2) {
case 0:
if (charAt == '+') {
i2 = 1;
break;
} else if (charAt == '0') {
i2 = 2;
break;
} else {
if (e(charAt)) {
return false;
}
break;
}
case 1:
case 3:
case 5:
if (isISODigit(charAt)) {
i2 = 6;
break;
} else {
if (e(charAt)) {
return false;
}
break;
}
case 2:
if (charAt == '0') {
i2 = 3;
break;
} else if (charAt == '1') {
i2 = 4;
break;
} else {
if (e(charAt)) {
return false;
}
break;
}
case 4:
if (charAt == '1') {
i2 = 5;
break;
} else {
if (e(charAt)) {
return false;
}
break;
}
case 6:
case 7:
if (isISODigit(charAt)) {
i2++;
break;
} else {
if (e(charAt)) {
return false;
}
break;
}
default:
if (e(charAt)) {
return false;
}
break;
}
}
if (i2 != 6 && i2 != 7 && i2 != 8) {
z = false;
}
return z;
}
public static final boolean e(char c) {
return (c >= '0' && c <= '9') || c == '*' || c == '#' || c == '+' || c == 'N' || c == ';' || c == ',';
}
public static String[] jW(int i) {
switch (i) {
case 0:
return new String[]{qs.bUw, qs.bUp};
case 1:
return new String[]{qs.bUq, qs.bUo};
case 2:
return new String[]{qs.bUx, qs.bUv};
default:
return new String[]{qs.bUw, qs.bUp};
}
}
public static boolean hD(String str) {
String formatNumber = formatNumber(str);
if (formatNumber == null || formatNumber.length() != 11 || "13800138000".equals(formatNumber)) {
return false;
}
return formatNumber.startsWith("13") || formatNumber.startsWith("15") || formatNumber.startsWith("18") || formatNumber.startsWith("17");
}
}