【问题标题】:Android: call specific-version APIAndroid:调用特定版本的 API
【发布时间】:2012-05-10 00:35:24
【问题描述】:

我的应用程序(从 Android 2.3.3 开始)还必须支持 Android Ice Cream OS 4.0.3。 一切正常,但是当使用 GROUP BY 并且 SQL 抱怨这会导致崩溃时,来自 Content Resolver 的查询会在圆括号中产生奇怪的事情。在 Android API 级别 10 上看不到同样的情况。 也就是说,我的问题是:是否可以在冰淇淋上使用旧版本或 API(在我的情况下为 10)? 当然,如果我的问题有更好的解决方案,那将受到欢迎。

提前致谢。

代码(简化版)如下:

ContentResolver contentResolver = context.getContentResolver();
Uri uri = Uri.withAppendedPath( ContactsContract.Data.CONTENT_URI, "");
StringBuilder where = new StringBuilder();
allContactCursor = contentResolver.query( uri,
PROJECTION_CONTACT,
"1) GROUP BY ( "+ RawContacts.CONTACT_ID,
null,
ContactsContract.Contacts.DISPLAY_NAME + " COLLATE NOCASE");

问题是 Ice Cream Sandwich 在编译 Sqlite 查询时不允许 GROUP BY 注入,相反,这适用于 Gingerbread 2.3.3。 如果没有 GROUP BY,联系人会根据联系人拥有的电话号码数量重复。

谢谢

【问题讨论】:

  • 并非如此。设备上有一个版本。关于您的问题,如果您显示代码和崩溃日志会有所帮助。

标签: android api


【解决方案1】:

Android 4.+ 向后兼容,因此即使使用 android 2.3.3 api,它也应该可以正常运行您的应用程序。除非您使用的是 4.0 特有的 api 功能。您最好的选择是将您的应用程序构建到 2.3.3,然后在 ICS 4.0 上进行测试...我希望这会有所帮助

【讨论】:

  • 您好,我知道当针对旧 API 级别编译的应用在更新版本上执行时,Android 会设置兼容性标志。我已经按照您的建议进行了操作,并且看到了我描述的问题。
猜你喜欢
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-25
相关资源
最近更新 更多