次のコードを使用して、電話から連絡先番号のリストを取得します。
Cursor c = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while(c.moveToNext()){
Log.d(TAG,"NO.: "+ c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER)));
}
API 16以降では、ユーザーがどのように保存したかに関係なく、E 164形式でフォーマットされたすべての連絡先が必要なため、これは私にとっては完全に機能します。
ただし、API が 16 未満の場合、上記のコードは機能せず、次の行を使用してすべての連絡先の E 164 形式を取得できません。
c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
「PhoneNumberUtils」クラスは役に立ちませんでした。
また、連絡先の ISO 3166-1 2 文字の国コードがわからないため、 libphonenumberライブラリを使用して番号を E 164 形式に変換することもできません。
libphonenumber ライブラリを使用できるように、Android の連絡先ごとに ISO 3166-1 の 2 文字の国コードを取得する方法はありますか?
または、ポイント 1 を達成するための他の解決策はありますか。
電話から取得した番号は、任意の形式にすることができます。
- ローカル : 965XXXXXXX
- ナショナル : 0965XXXXXXX
- 国際 : +91 96 5X XXXXXX
- その他
一方、E 164 は +91XXXXXXXXXX で、91 は国コードです。
どんな助けでも大歓迎です!