无论如何使用Android编程使用URI来放置JOIN条件?

Posted

技术标签:

【中文标题】无论如何使用Android编程使用URI来放置JOIN条件?【英文标题】:Is there anyway to put a JOIN conditions using URIs using Android Programming? 【发布时间】:2012-01-30 10:40:10 【问题描述】:

我实现了一个小应用程序,它会列出收件箱中的所有短信,并显示联系人号码和姓名。

我必须使用两个 URI,一个是获取 SMS,另一个是获取与该 SMS 相关的联系信息。

这种方法在列出所有带有联系人姓名的 SMS 时存在很多性能问题。我的 600MHz android 手机需要很长时间才能安静下来。

但我的原生 SMS 应用程序在几分之一秒内启动。我真的不知道如何实现这一点。

我正在考虑在两个 URI 上使用 JOIN 条件的一种方式,因为我不知道如何在 Content://SMS/inbox 和联系人数据上使用 rawQuery。

任何帮助将不胜感激。在此先感谢..

【问题讨论】:

ContentProvider/ContentResolver API 仅公开在提供程序本身中显式声明的 JOIN - 这些 JOIN 通常仅在该提供程序的 SQLite 数据库中 - 如果您需要来自两个提供程序的信息,您将必须在 sw 中进行,例如使用可怕的错误 CursorJoiner(不知道他们是否愿意修复那个)。 【参考方案1】:

但我的原生 SMS 应用程序在几分之一秒内启动。我真的不知道如何实现这一点。

他们可以直接访问自己的数据库,因此可以直接使用 JOIN。您不能在 ContentProviders 之间表达 JOIN。

【讨论】:

以上是关于无论如何使用Android编程使用URI来放置JOIN条件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从用户手机获取联系人 URI 并在 android 中使用 glide 加载

Android Google Maps URL 查询 - 离线放置标记

PHP:正则表达式,如何验证 android 和 ios 深层链接 URI

android之Uri使用

如何使用 Glide Android 加载带有“content://”前缀的 URI?

如何使用java在android移动设备中获取位图uri