Android 2.2以降で利用可能な新しいバックアップAPIの使用を検討していますが、下位互換性を維持する必要があります(正確には1.5まで)。
ドキュメントの状態:
バックアップサービスと使用する必要のあるAPIは、APIレベル8(Android 2.2)以降を実行しているデバイスでのみ使用できるため、android:minSdkVersion属性も「8」に設定する必要があります。ただし、アプリケーションに適切な下位互換性を実装すると、APIレベル8以上を実行しているデバイスでこの機能をサポートしながら、古いデバイスとの互換性を維持できます。
targetSdkVersion
私は確かにレベル8とレベル3を比較して構築しminSdkVersion
、ラッパークラス(リフレクション付き)を使用して、存在しないクラスを拡張するクラスを実装した場合にアプリケーションが実行されないという問題を克服しようとしています。
問題は次のとおりです。クラスを実際に呼び出すことはないためBackupHelper
、クラスが実際に存在するかどうかを事前に確認することはできません。(Androidの下位互換性に関するドキュメントでcheckAvailable()
メソッドを使用して説明されています。)したがって、クラスはインスタンス化され、にキャストされますBackupAgent
。ただし、リフレクションを使用しているため、実際にはBackupAgentをオーバーライドせず、実行時にバックアップが要求されたときに例外が発生します。
java.lang.RuntimeException: Unable to create BackupAgent org.transdroid.service.BackupAgent: java.lang.ClassCastException: org.transdroid.service.BackupAgent
下位互換性への私のアプローチは次のとおりです。httpBackupAgent
://code.google.com/p/transdroid/source/browse/#svn/trunk/src/org/transdroid/serviceここで、BackupAgent.javaは「通常の」BackupAgentHelperです。 -extendingクラスとBackupAgentHelperWrapperは、リフレクションベースのラッパークラスです。
BackupAgent
下位互換性を備えた実装に成功した人はいますか?