1

コンテンツレゾルバを使用して携帯電話の連絡先から電話番号を取得するコードがあります.2台のモバイルでテストしました.1つは国コードを取得し、もう1つはdoesntです。国コードは、携帯電話番号に存在し、存在する場合、私はnumber.Hereから分離したいかどうかを確認する方法は、私のcode.PleaseあなたはAndroidのPhoneNumberUtils.formatNumberを使用することができます私に存在する場合は携帯電話番号から国コードを区切ります

ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, 
      null, null, null, null); 

    if ((cur != null ? cur.getCount() : 0) > 0) { 
     while (cur != null && cur.moveToNext()) { 
      String id = cur.getString(
        cur.getColumnIndex(ContactsContract.Contacts._ID)); 
      String name = cur.getString(cur.getColumnIndex(
        ContactsContract.Contacts.DISPLAY_NAME)); 
      phoneContactName.add(name); 

      if (cur.getInt(cur.getColumnIndex(
        ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0) { 
       Cursor pCur = cr.query(
         ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
         null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
         new String[]{id}, null); 
       while (pCur.moveToNext()) { 
        String phoneNo = pCur.getString(pCur.getColumnIndex(
          ContactsContract.CommonDataKinds.Phone.NUMBER)); 
        String countryCode = pCur.getString(pCur.getColumnIndex(
          ContactsContract.CommonDataKinds.Phone.NUMBER)); 
        phoneContactNos.add(phoneNo); 
        dup_phoneContactNos.add(phoneNo); 
        /*if (registeredContactNos.contains(phoneNo)) { 
         Toast.makeText(getApplicationContext(), "match found", Toast.LENGTH_SHORT).show(); 
         selectedContactName.add(name); 
         selectedContactNos.add(phoneNo); 
         populateList(name, phoneNo); 


        }*/ 
        Log.i(TAG, "Name: " + name); 
        Log.i(TAG, "Phone Number: " + phoneNo); 
       } 


       pCur.close(); 
      } 
     } 
     /*for(int i=0;i<selectedContactName.size();i++) 
     { 
      Toast.makeText(getApplicationContext(),selectedContactName.get(i)+","+selectedContactNos.get(i),Toast.LENGTH_SHORT).show(); 
     }*/ 
    } 
    if (cur != null) { 
     cur.close(); 
    } 
+0

https://stackoverflow.com/questions/2543938/how-to-split-mobile-number-into-country-code-area-code-and-local-数 –

+0

私はすでに国番号で電話番号を取得していますが、時にはそうではありません。電話番号は – user8601021

答えて

0

を助けるです。

は、あなただけのロリポップと上記のデバイスをターゲットにしている場合:

String formattedPhone = PhoneNumberUtils.formatNumber(phone, Locale.getDefault().getCountry())); 

あなたにも古いバージョンをターゲットに設定している場合:

String formattedPhone; 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    formattedPhone = PhoneNumberUtils.formatNumber(phone, Locale.getDefault().getCountry())); 
} else { 
    formattedPhone = PhoneNumberUtils.formatNumber(phone)); 
} 
+0

で、電話番号は何文字ですか? – user8601021

+0

これはno.withとnoの国コード – user8601021

+0

を表示します。 'formattedPhone'は、現在の国のフォーマットルールに基づいて、国コードなしで番号をフォーマットする必要があります。 'formattedPhone'の国コードを取得していますか? – marmor

関連する問題