전화 번호가 문자열로 주어지면 연락처에 저장된대로 올바른 값을 찾으려면 어떻게해야합니까?android 올바른 전화 번호를 찾으십시오.
예 :
을 감안할 때 전화 번호 : 연락처에서 9743343954
전화 번호 : 919743343954
편집 : 숫자의 길이는 고정되어 있지 않습니다.
감사합니다.
전화 번호가 문자열로 주어지면 연락처에 저장된대로 올바른 값을 찾으려면 어떻게해야합니까?android 올바른 전화 번호를 찾으십시오.
예 :
을 감안할 때 전화 번호 : 연락처에서 9743343954
전화 번호 : 919743343954
편집 : 숫자의 길이는 고정되어 있지 않습니다.
감사합니다.
을 확인할 수 있지만입니다 이것은 당신을 도울 것입니다 :
//Find contact by given number
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode("9743343954"));
String[] projection = new String[] { PhoneLookup.NUMBER, PhoneLookup.NORMALIZED_NUMBER };
Cursor c = getContentResolver().query(uri, projection, null, null, null);
if (c.moveToFirst()) {// while(c.moveToNext()){
//get number assigned by user to given contact, in this case 9743343954
String number = c.getString(c.getColumnIndexOrThrow(PhoneLookup.NUMBER));
//get normalized E164 number, in this case +919743343954
String normalized = c.getString(c.getColumnIndexOrThrow(PhoneLookup.NORMALIZED_NUMBER));
Toast.makeText(getApplicationContext(), "Number: " + number + "; normalized: " + normalized,
Toast.LENGTH_LONG).show();
}
c.close();
이 작품은 매니페스트 프로젝트에 권한을 추가하는 방법은 다음과 같습니다
는<uses-permission android:name="android.permission.READ_CONTACTS" />
예제를 사용하면 전화 번호는 길이가 10 자이고 연락처가 13이고 마지막 10자를 일치 시키려고합니다. 그래서, 뭔가 같은 :
// I am assuming that you've removed all spaces, full stops,
// dashes etc from the two input variables
public boolean numbersMatch(String numberToMatch, String numberFromContacts) {
// Ensure that the both numbers are of a reasonable length
if (numberToMatch.length() < 9) return false;
if (numberFromContacts.length() < 9) return false;
// Is the number to match hidden in the contacts number
if (numberFromContacts.lastIndexOf(numberToMatch) != -1) return true;
// Or is the contact number hidden in the number to macth
if (numberToMatch.lastIndexOf(numberFromContacts) != -1) return true;
// No match, so return false
return false;
}
첫 번째 단계는 모든 여분의 공백과 추가 문자 제거하는 것입니다 : 이제 10 자리 숫자를 얻기 위해 문자열의 방법을 사용할 수 있습니다
//Removes the extra characters from the incoming number
private String removeExtraCharacters(String phoneNumber){
try
{
phoneNumber = phoneNumber.replace("(", "");
phoneNumber = phoneNumber.replace(")", "");
phoneNumber = phoneNumber.replace("-", "");
phoneNumber = phoneNumber.replace(" ", "");
phoneNumber = phoneNumber.replace("+", "");
}
catch (Exception e)
{
Log.e("Cal Reciever_R", e.toString());
}
return phoneNumber;
}
과에서 ignorin +91 전면은 다음과 같이
phoneNumber =phoneNumber .substring(phoneNumber .length()-10);
왜이
이 전화 감각을 가정하지 않는다 어 주어
String a = "9123456789";
입니다 그리고 연락처에있는 사람은 그런
String b = "+91-9123456789";
가 쉽게 어쩌면 그것을 나는 당신이 무슨 뜻인지 이해가 잘 모르겠어요 이런 식으로
if(b.contains(a))
{
//Do what you want!
}
그리고 "+ 91-9123456789"라는 숫자와 "234567"이라는 짧은 로컬 번호가 있으면 어떻게합니까? 그들은 달라야 만합니다. – Gaket
@Lecho에서 그 대답은 당신이 관련된 접촉 (또는 관련 정보)를 얻으려면 좋은 것 같다. 안드로이드 문서에서이 페이지에 대한 자세한 내용 http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookup.html
당신은 그들이 있는지 확인하기 위해이 개 숫자를 비교하려는 경우 지금까지 내가 아는 한, PhoneLookup.NORMALIZED_NUMBER은, 다른 측면에서 API (16)부터 사용할 수 있습니다
동일하지만 사용할 수있는 두 가지 방법으로 형식의 :
PhoneNumberUtils.compare(phoneNumber1, phoneNumber2)
최저
아래 답변 중 하나를 만족하는 경우
, 그것을 받아 들일 것을 잊지 마십시오! 사람들이 답변을 제공 할 것을 권장합니다 :-) –