从 android 中的电话簿中获取联系人号码
Get Contact No From PhoneBook In android
我正在开发一个简单的应用程序,当我在其中单击 EditText 时,phone 联系人 将打开当用户 select 一个联系人时,它将显示在 EditText 中。
我已经做到了,但问题是某些联系人会显示如下输出:
05-09 13:39:03.660: D/Actual No--->>>(953): 84 85 835654
05-09 13:39:03.660: D/phoneno(953): Tufan 85 835654
05-09 13:39:08.911: W/IInputConnectionWrapper(953): showStatusIcon on inactive InputConnection
05-09 13:39:15.428: D/Actual No--->>>(953): 08485835654
05-09 13:39:15.428: D/phoneno(953): Tufan8485835654
05-09 13:39:22.512: W/IInputConnectionWrapper(953): showStatusIcon on inactive InputConnection
05-09 13:39:31.825: W/IInputConnectionWrapper(953): showStatusIcon on inactive InputConnection
05-09 13:39:42.468: W/IInputConnectionWrapper(953): showStatusIcon on inactive InputConnection
05-09 13:45:16.147: D/Actual No--->>>(953): +918485835654
05-09 13:45:16.147: D/phoneno(953): Tufan8485835654
因此,正如您所见,对于某些联系人,它给了我正确的结果。这个怎么解决啦?
检查我的 java 代码:
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
if (c.moveToFirst()) {
String id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (hasPhone.equalsIgnoreCase("1")) {
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id,
null, null);
phones.moveToFirst();
String phn_no = phones.getString(phones.getColumnIndex("data1"));
Log.d("Actual No--->>>", phn_no);
int len = phn_no.length() % 10;
String phn_no1 = phn_no.substring(len, phn_no.length());
Log.d("phoneno", "Tufan" + phn_no1);
}
}
我认为问题出在 space 之间,但这取决于用户如何保存。但是作为程序员,我需要解决。如果有人知道,请帮助我。
通过此代码尝试这是 运行 代码。
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
null, null);
while (phones.moveToNext()) {
String name = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Toast.makeText(getApplicationContext(), name, Toast.LENGTH_LONG)
.show();
System.out.println(name + "==" + phoneNumber);
}
phones.close();
获取联系电话的代码似乎还可以。
我猜问题只出在联系方式 space 上
您可以通过替换 -
来删除 space
String phn_no = phones.getString(phones.getColumnIndex("data1"));
到
String phn_no = phones.getString(phones.getColumnIndex("data1")).trim().replace(" ","");
希望对您有所帮助。祝你好运。
我正在开发一个简单的应用程序,当我在其中单击 EditText 时,phone 联系人 将打开当用户 select 一个联系人时,它将显示在 EditText 中。 我已经做到了,但问题是某些联系人会显示如下输出:
05-09 13:39:03.660: D/Actual No--->>>(953): 84 85 835654
05-09 13:39:03.660: D/phoneno(953): Tufan 85 835654
05-09 13:39:08.911: W/IInputConnectionWrapper(953): showStatusIcon on inactive InputConnection
05-09 13:39:15.428: D/Actual No--->>>(953): 08485835654
05-09 13:39:15.428: D/phoneno(953): Tufan8485835654
05-09 13:39:22.512: W/IInputConnectionWrapper(953): showStatusIcon on inactive InputConnection
05-09 13:39:31.825: W/IInputConnectionWrapper(953): showStatusIcon on inactive InputConnection
05-09 13:39:42.468: W/IInputConnectionWrapper(953): showStatusIcon on inactive InputConnection
05-09 13:45:16.147: D/Actual No--->>>(953): +918485835654
05-09 13:45:16.147: D/phoneno(953): Tufan8485835654
因此,正如您所见,对于某些联系人,它给了我正确的结果。这个怎么解决啦?
检查我的 java 代码:
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
if (c.moveToFirst()) {
String id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (hasPhone.equalsIgnoreCase("1")) {
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id,
null, null);
phones.moveToFirst();
String phn_no = phones.getString(phones.getColumnIndex("data1"));
Log.d("Actual No--->>>", phn_no);
int len = phn_no.length() % 10;
String phn_no1 = phn_no.substring(len, phn_no.length());
Log.d("phoneno", "Tufan" + phn_no1);
}
}
我认为问题出在 space 之间,但这取决于用户如何保存。但是作为程序员,我需要解决。如果有人知道,请帮助我。
通过此代码尝试这是 运行 代码。
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
null, null);
while (phones.moveToNext()) {
String name = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Toast.makeText(getApplicationContext(), name, Toast.LENGTH_LONG)
.show();
System.out.println(name + "==" + phoneNumber);
}
phones.close();
获取联系电话的代码似乎还可以。
我猜问题只出在联系方式 space 上
您可以通过替换 -
来删除 spaceString phn_no = phones.getString(phones.getColumnIndex("data1"));
到
String phn_no = phones.getString(phones.getColumnIndex("data1")).trim().replace(" ","");
希望对您有所帮助。祝你好运。