我正在开发一个应该在 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/