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)

Calendar API は 4.0 から削除されましたか?? 2.3 電子メール アプリケーションを 4.0 で正常に実行するにはどうすればよいですか? それとも治らない??

4

2 に答える 2

2

理由はわかっています。Calendar Provider が 4.0 で変更されました。2.3 では、Calendar Provider はandroid.provider.Calendarであり、4.0 では、Calendar Provider は です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 に答える