gpt4 book ai didi

android 无法从某些手机获取联系人

转载 作者:行者123 更新时间:2023-11-29 14:00:45 30 4
gpt4 key购买 nike

我编写了一个应用程序,需要从用户的手机中读取联系人。自从我将它转换市场以来,一些用户告诉我我的应用程序无法读取他们的联系人列表(它会弹出一条错误消息,说它无法获取联系人列表)。

对于大约 80% 的用户来说,一切正常,但其他人会遇到这个问题。

在我的 MainActivity 中,我调用方法:GetContacts()

如果该方法没有返回联系人,那么我调用:GetContacts2()

如果应用仍然无法获取联系人,则会弹出错误消息。以下是我正在使用的两种方法。有些手机,这不起作用,是 Droid X2 和 HTC Incredible。

我还在我的 list 中将所需的 API 级别设置为 8,这样就淘汰了旧手机。我也没有这些用户的日志文件。

注意:为了简单起见,我删除了将联系人简单地放入数组中的额外代码。

关于为什么这些方法不适用于所有手机的任何想法?

任何帮助将不胜感激!!

标记

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)
{
}
}

最佳答案

我同意。异常(exception)绝对不应该被扔到一边。他们是异常(exception);它们表明出现了严重错误,需要进行检查。我建议您至少记录它们,以便遇到问题的用户可以向您发送 LogCat。如果您不希望您的用户经历这些麻烦,请将数据写入 SD 卡(公共(public))上的文件,以便他们可以访问并发送给您。

关于android 无法从某些手机获取联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9576496/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com