Android在平板电脑上清空短信收件箱



对于一个项目,我必须在带有SIM卡的平板电脑上制作短信应用程序。我能够发送短信和接收短信,但是当我使用内容解析器访问"Content://sms/inbox"时,我的光标没有数据。有人知道是什么问题吗?

下面是我从收件箱中读取短信的代码:

private List<Sms> getSms() {
    List<Sms> smsList = new ArrayList<Sms>();
    Uri uri = Uri.parse("content://sms/inbox");
    Cursor c= mContext.getContentResolver().query(uri, null, null ,null,null);
    Log.d("stackoverflow", "Number of sms: " + c.getCount());
    while(c.moveToNext()) {
        Sms sms = new Sms(c.getString(c.getColumnIndexOrThrow("address")).toString(), c.getString(c.getColumnIndexOrThrow("body")).toString());
        smsList.add(sms);
    }
    c.close();
    return smsList;
}

上面代码中的Log返回0,即使我刚刚向Tablet发送了一条短信。

提前感谢!

从评论中收集的信息和您在设备上运行的测试来看,似乎没有真正的问题。你刚从一个新的,空的短信提供商开始。由于当时没有安装默认的SMS应用程序,因此没有可用的应用程序将任何传入的消息写入收件箱,这就是为什么即使收到了一些消息,查询也没有结果。看来你的应用程序将不得不处理保存传出和传入的消息。

要对SMS提供程序具有写访问权限,您的应用程序需要是设备上的默认消息传递应用程序。通常情况下,默认应用程序需要处理大量的事情,但你正在编写一个只需要处理短信的自定义应用程序,所以你可以仅仅将其"呈现"为默认功能。这个答案详细说明了您的应用程序能够被选择为默认值的最低要求。这只是把所有正确的东西都放在清单上的问题。

除此之外,您只需要在Provider上进行适当的查询和插入。您在问题中有一个示例查询,在这篇文章中可以找到一个简单的插入示例。

如果你决定在将来实现默认应用程序的进一步功能,我将留下一个链接到事实上的参考,用于KitKat引入的SMS API的更改。

让你的短信应用准备好KitKat

相关内容

  • 没有找到相关文章