2

版本为 2.3 的本机电子邮件应用程序在 4.0 版本中运行,它将显示以下异常:

W/dalvikvm( 1308): VFY: unable to resolve static field 31 (CONTENT_URI) in Landroid/provider/Calendar$Calendars;
D/dalvikvm( 1308): VFY: replacing opcode 0x62 at 0x0014
E/AccountManager( 1308): Listener was not previously added
W/dalvikvm( 1308): threadid=13: thread exiting with uncaught exception (group=0x40c391f8)
V/EmailProvider( 1308): EmailProvider.query: uri=content://com.screenshare.email.provider/account/2, match is 2
E/AndroidRuntime( 1308): FATAL EXCEPTION: SyncManager
E/AndroidRuntime( 1308): java.lang.NoClassDefFoundError: android.provider.Calendar$Calendars
E/AndroidRuntime( 1308):        at com.screenshare.exchange.SyncManager$CalendarObserver.<init>(SyncManager.java:704)
E/AndroidRuntime( 1308):        at com.screenshare.exchange.SyncManager.registerCalendarObserver(SyncManager.java:655)
E/AndroidRuntime( 1308):        at com.screenshare.exchange.SyncManager.checkMailboxes(SyncManager.java:2138)
E/AndroidRuntime( 1308):        at com.screenshare.exchange.SyncManager.run(SyncManager.java:1949)
E/AndroidRuntime( 1308):        at java.lang.Thread.run(Thread.java:856)

日历 API 是否从 4.0 中删除?2.3 如何让Email应用在4.0中成功运行?还是修不了??

4

2 回答 2

2

我知道原因:日历提供程序在 4.0 中已更改。在 2.3 中,日历提供程序是android.provider.Calendar,在 4.0 中,日历提供程序是android.provider.CalendarContract. 所以如果不修改源代码,4.0是无法成功运行的。

于 2012-06-21T12:51:39.163 回答
0

让您的代码在任何版本的 android 上运行

if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD) {
    use android.provider.Calendar

}else{
    use android.provider.CalendarContract
}
于 2013-11-18T06:48:07.640 回答