android - 如何检查游标是否为空?

标签 android android-contacts android-cursor

当我尝试从电话的联系人列表中获取电话号码时。问题是,当我在手机中的联系人列表为空时运行该应用程序时,该应用程序已停止。我查了一下,这是因为光标是空的。

如何查看光标是否为空或手机的联系人列表中是否有联系人?

ArrayList<String> lstPhoneNumber = new ArrayList<String>();
Cursor phones = getContentResolver().query(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
lstPhoneNumber = new ArrayList<String>();

phones.moveToFirst();
// The problematic Line:
lstPhoneNumber.add(phones.getString(phones.getColumnIndex(
        ContactsContract.CommonDataKinds.Phone.NUMBER))); 
while (phones.moveToNext()) {
    lstPhoneNumber.add(phones.getString(phones.getColumnIndex(
            ContactsContract.CommonDataKinds.Phone.NUMBER))); 
}
phones.close();

最佳答案

测试“有效”游标的一般模式是

((cursor != null) && (cursor.getCount() > 0))

Contacts Provider 不会返回 null,但其他内容提供者可能会在遇到某种数据错误时这样做。内容提供者应该处理异常,将光标设置为零,并记录异常,但不能保证。

关于android - 如何检查游标是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15010761/

相关文章:

android - UIautomator如何通过索引或实例获取 child

java - Android 获取手机通讯录并删除重复项

android - 如何在线程内使用 Cursor 进行查询? (安卓)

android - 将一个 Cursor 的内容添加到另一个 Cursor

Android:如何创建我自己的游标类?

java - iOS 调用 [NSDate timeIntervalSinceNow] 的 Android/Java 等价物是什么?

android - 模拟器 : emulator: ERROR: AdbHostServer. cpp:93:无法连接到端口上的 adb 守护程序:5037 下午 1:20

android - 如何动画滚动位置?如何平滑滚动?

android - 如何知道联系人是否在android中添加、更改或删除

android - ContactsContract.CommonDataKinds.Phone.CONTENT_URI 与 ContactsContract.Contacts.CONTENT_URI