Я написал приложение, которое должно читать контакты с телефона пользователя.Поскольку я выпустил его на рынок, несколько пользователей сказали мне, что мое приложение не может прочитать их список контактов (появляется сообщение об ошибке, в котором говорится, что оно не может получить список контактов).
Примерно80% пользователей, все работает нормально, но у других есть эта проблема.
В моей MainActivity я вызываю метод: GetContacts()
Если этот метод не возвращает контактов, я вызываю: GetContacts2()
Если приложение по-прежнему не может получить контакты, появляется всплывающее сообщение об ошибке.Ниже приведены два метода, которые я использую.Некоторые из телефонов, это не работает, это Droid X2 и HTC Incredible.
Я также устанавливаю требуемый уровень API в моем манифесте на 8, чтобы исключить старые телефоны.У меня также нет файлов журналов от этих пользователей.
ПРИМЕЧАНИЕ. Я удалил дополнительный код, который просто помещает контакты в массив для простоты.
Любые идеи о том, почему эти методы нене работает на всех телефонах?
Любая помощь будет принята с благодарностью !!
Mark
private void GetContacts()
{
try
{
Context context = getApplicationContext();
Cursor cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (Integer.parseInt(hasPhone)==1)
{
Cursor phone = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
while (phone.moveToNext())
{
phoneNo = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
phoneType = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
}
}
}
}
catch (Exception e)
{
}
}
private void GetContacts2()
{
try
{
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cur.getCount() > 0)
{
while (cur.moveToNext())
{
contactId = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
contactName = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
{
if (Integer.parseInt(cur.getString(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[]{contactId}, null);
while (pCur.moveToNext())
{
phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
phoneType = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
}
pCur.close();
}
}
}
}
}
catch (Exception e)
{
}
}