java - 为不同的运行时设置 Android 代码

标签 java android

我正在开发一个应该在 Android 1.5 及更高版本的设备上运行的 Android 应用程序。我正在使用 RawContacts.CONTENT_URI 枚举在我的应用程序子类中注册一个 ContentObserver。现在,Eclair 中引入了 RawContacts,在运行时间低于 2.0 的 Android 设备上运行此代码会出现 java.lang.VerifyError。对于旧设备,我必须使用 Contacts.CONTENT_URI

为了解决这个问题,我在我的代码中添加了如下内容:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR){
  uri = android.provider.ContactsContract.RawContacts.CONTENT_URI;
}
else{
  uri = android.provider.Contacts.CONTENT_URI;
}

我仍然收到 java.lang.VerifiyErrors。

如何为不同的运行时设置我的代码?

最佳答案

我认为您需要使用反射来获取所需的枚举

http://android-developers.blogspot.com/2009/04/backward-compatibility-for-android.html

因为字节码对于 2.0 之前的设备是无效的,因为它命名了一个不存在的类。

关于java - 为不同的运行时设置 Android 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3959362/

相关文章:

java - Java 中的数学问题;计算得出的不可思议的 NaN

java - 无法让 Android studio 在模拟器上运行应用程序

jquery - 在 Android 2 上获取在新窗口中打开的链接

java - Android应用登录注册报错

java - JAX-WS 生成的架构版本

java - 如何将字符串数据从sqlite for android存储到整数数组中

java - 转换 JSON 字符串对象列表

java - 在 Spring MVC 中无法从单独的服务包中找到 bean

android - 如何将屏幕分成两个同样大的空间,分别对触摸事件使用react?

android - 从android中的服务器获取响应