如何解决由于游标索引问题导致的获取短信失败?
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/"
解决了我的问题 - 它获取所有短信。
我正在尝试制作自己的 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/"
解决了我的问题 - 它获取所有短信。