我正在开发一个具有登录活动的应用程序,其中,当用户登录时,它会自动将联系人从他们的手机保存到服务器。这可行,但我有一个问题,当我保存数字时,它们以用户在手机中输入的格式保存。例如,如果用户输入这个号码:+15555555,它将像这样被保存,但如果他输入它没有国家代码,它将看起来像这样:5555555,没有+1,或任何其他国家代码,具体取决于国家。
我想要的是返回我所有的联系人以及他们的国家代码,即使是用户输入的没有国家代码的联系人。
Viber等一些应用程序可以识别它所在的格式,所以如果它不是以+1开头,或者以05..开头,它会被识别并自动添加国家代码,这样05..就变成了+15。 ..
public void updateContacts() {
String[] PROJECTION = new String[]{
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER
};
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, PROJECTION, null, null, null);
HashMap<String, String> user = db.getUserDetails();
String userId = user.get("uid");
if (phones != null) {
while (phones.moveToNext()) {
if (phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER) != -1) {
final String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
Call<ContactsResponse> call = apiService.contactExists(phoneNumber, userId);
call.enqueue(new Callback<ContactsResponse>() {
@Override
public void onResponse(Call<ContactsResponse> call, retrofit2.Response<ContactsResponse> response) {
Log.e(TAG, "abc");
}
@Override
public void onFailure(Call<ContactsResponse> call, Throwable t) {
Log.e(TAG, t.toString());
}
});
}
}
}
if (phones != null) {
phones.close();
}
}
我正在使用 libphonenumber,所以我想知道是否有办法使用它并获取国家代码,然后将其添加到没有它的号码中。