Android 平板电脑上的空短信收件箱
Android empty sms inbox on Tablet
对于一个项目,我必须在带有 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("Whosebug", "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;
}
上面代码中的登录 returns 零,即使我刚刚向平板电脑发送了一条短信。
提前致谢!
根据评论中收集到的信息以及您在设备上 运行 进行的测试,似乎确实没有问题。您刚刚开始使用一个全新的空 SMS Provider。由于您当时没有安装默认的 SMS 应用程序,因此没有可用于将任何传入消息写入收件箱的应用程序,这就是为什么该查询没有返回任何结果,即使在收到一些消息后也是如此。看来您的应用程序将不得不处理保存传出和传入消息。
要拥有对 SMS Provider 的写入权限,您的应用需要成为设备上的默认消息传递应用。通常,默认应用程序需要处理一大堆事情,但您正在编写一个只需要处理 SMS 的自定义应用程序,因此您只需 "presenting" 它具有默认功能即可。 详细说明了您的应用能够被选为默认应用的最低要求。这只是在清单中包含所有正确内容的问题。
除此之外,您只需要在 Provider 上进行适当的查询和插入。您在问题中有一个示例查询,可以在 this post.
中找到一个简单的插入示例
如果您将来决定实现默认应用程序的更多功能,我将 link 留给 事实上的 参考以更改短信 API 在 KitKat 中引入。
对于一个项目,我必须在带有 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("Whosebug", "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;
}
上面代码中的登录 returns 零,即使我刚刚向平板电脑发送了一条短信。
提前致谢!
根据评论中收集到的信息以及您在设备上 运行 进行的测试,似乎确实没有问题。您刚刚开始使用一个全新的空 SMS Provider。由于您当时没有安装默认的 SMS 应用程序,因此没有可用于将任何传入消息写入收件箱的应用程序,这就是为什么该查询没有返回任何结果,即使在收到一些消息后也是如此。看来您的应用程序将不得不处理保存传出和传入消息。
要拥有对 SMS Provider 的写入权限,您的应用需要成为设备上的默认消息传递应用。通常,默认应用程序需要处理一大堆事情,但您正在编写一个只需要处理 SMS 的自定义应用程序,因此您只需 "presenting" 它具有默认功能即可。
除此之外,您只需要在 Provider 上进行适当的查询和插入。您在问题中有一个示例查询,可以在 this post.
中找到一个简单的插入示例如果您将来决定实现默认应用程序的更多功能,我将 link 留给 事实上的 参考以更改短信 API 在 KitKat 中引入。