如何解决由于游标索引问题导致的获取短信失败?

How to resolve fetching SMS fail due to cursor index issues?

我正在尝试制作自己的 SMS 应用程序,但在获取 SMS 时遇到了问题。 我正在 AVD 上测试应用程序,我的 SMS 文件夹如下所示。

负责获取现有数据的方法:

public void refreshSmsInbox() {

        ContentResolver contentResolver = getContentResolver();
        Cursor smsInboxCursor = contentResolver.query(Uri.parse("content://sms/inbox"), null, null, null, null);
        int indexBody = smsInboxCursor.getColumnIndex("body");
        int indexAddress = smsInboxCursor.getColumnIndex("address");
        if (indexBody < 0 || !smsInboxCursor.moveToFirst()) return; //FAILING HERE

        do {
            ffrom.add(smsInboxCursor.getString(indexAddress));
            ccontent.add(smsInboxCursor.getString(indexBody));
            //String str = "SMS From: " + smsInboxCursor.getString(indexAddress)  + "\n" + smsInboxCursor.getString(indexBody) + "\n";
            //arrayAdapter.add(str);
        } while (smsInboxCursor.moveToNext());

“//FAILING HERE”注释行是罪魁祸首。我不知道确切的问题是什么。我不知道如何进行条件检查。 smsInboxCursor 不为空,我查过了。

请帮助我了解我的代码未按预期工作的原因。

AVD 中的短信应用程序:

我试图访问甚至使用 "content://sms/inbox" 发送的短信。那是我的错误。

"content://sms/" 解决了我的问题 - 它获取所有短信。