I am getting data from phone databese.But always cursor getting null
.I have also permission read contact. Can anybody help me?
//for get number and name from contacts
c = getContentResolver().query(uri, new String[]{
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.TYPE },
null, null, null);
My all code is here:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
Uri uri = data.getData();
if (uri != null) {
Cursor c = null;
try {
c = getContentResolver().query(uri, new String[]{
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.TYPE },
null, null, null);
if (c != null && c.moveToFirst()) {
String number = c.getString(0);
int type = c.getInt(1);
Toast.makeText(this, type + ": " + number, Toast.LENGTH_LONG).show();
}
} finally {
if (c != null) {
c.close();
}
}
}
And Exception
from logcat:
12-16 12:59:33.962: E/AndroidRuntime(20650): Caused by: java.lang.IllegalArgumentException: Invalid column data1
12-16 12:59:33.962: E/AndroidRuntime(20650): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167)
I get phoneNumber
with following code, use that:
Cursor contact = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (contact.getCount() > 0) {
contact.moveToFirst();
do
{
String contactId = contact.getString(contact
.getColumnIndex(ContactsContract.Contacts._ID));
log.d("contactId is", contactId);
Cursor pCur = getContentResolver()
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?",
new String[] { contactId }, null);
if (pCur.getCount() > 0){
pCur.moveToFirst();
do {
String number = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
log.d("number is",number);
} while (pCur.moveToNext());
}
}
while(contact.moveToNext());
}