2012-03-07 10 views
5

アンドロイド4の起動後、CalendarContractクラスがデバイスカレンダーにイベントを書き込むことを紹介しています。しかし、私はAPIレベル8を使用して私のアプリケーションを作成している場合、私はAPIレベル8で使用している私のプロジェクトでこのCalendarContractクラスを使用したい私はデバイスのカレンダーとこのコードdoen '私のプロジェクトではCalendarContractクラスをマニフェストファイルのsdkバージョンを変更せずに使用することができます。なぜなら私はsdkバージョンを14に変更するとCalendarContractクラスを使用することができます。アンドロイド4の問題です。しかし、そうすることで、私のアプリはapi 8 -13で動作し始めていません。アプリが市場に出ているので、やりたいことはありません。だから、この問題を解決する方法はありますか?例APIレベル8でCalendarContractクラスを使用する方法

答えて

0

を実行しているAndroidデバイス上でCalendarContractを使用することはできませんdiffのApiレベルのために... Programmatically obtain the Android API level of a device?

+0

それは私が知っているが、Apiレベルを見つけた後、何をすべきか私に説明してください。 – Rahul

+0

あなたはイベントを取得するためのメソッドを持ったライブラリを作成します。引数としてAPIレベルを取って、イベント.. – ngesh

+0

私は例を私に示すことができます。私は自分自身のライブラリを作成する方法と、イベントを取得するためのメソッドを追加する方法を知らない – Rahul

3

を私に教えてくださいあなたは、プログラムAPIレベルを見つけるための方法を見つける...あなたは、おそらくあなたは、適切なコードを使用することができた場合にAPIレベル未満14

+0

私はこの問題を解決できません。なぜデバイスのカレンダーにイベントを書くための私の以前のコードは、アンドロイド4.のために働かない私は未記載のAPIを使用しているのでそれです。これを解決する方法はありますか – Rahul

+0

カレンダーアクセスを抽象化し、カレンダーアクセスインターフェースの異なる実装を持っています - 未公開&信頼できない古いカレンダーインターフェース用と、1つはCalendarContract用です。 – Jens

+0

簡単な例で私に説明してください。私はそれについて何も考えていない。 – Rahul

3

私はこの問題を回避するために、SOと幅広いWebで見られるさまざまなアドバイスを組み合わせています。

基本的に私はCallendarAccess、同じパブリックメソッド構造を持つ2つのクラス、メソッドが古い文書化されていない道への決意を呼び出し、正しいアンドロイドを利用CalendarGTE14れるCalendarLT14と呼ばれるものをと呼ばれる世話人を使用V14 +物事を行う方法。

どちらも、これらのクラスは、CalendarLT14CalendarGTE14の公共のものに共通の抽象メソッドを含んでいCalendarServiceと呼ばれる自己記述された抽象クラスを拡張します。

IceCreamSandwich(v14)未満のAndroidバージョンは、CalendarContract callendarContactなどのコードをコンパイルしません。は、それ以降のバージョン用に作成されています。これを解決するには、マニフェストのターゲットバージョンを14(Android 4.0)に設定しますが、最小バージョンを7(アンドロイド2.1)に設定します。これは、コード4.0がコンパイルされ、呼び出されないため、下の世話人の方法の例。

public CalendarService getInstance() 
{ 
    if (Build.VERSION.SDK_INT >= 14) 
      return CalendarGTE14(context) 
    else 
      return CalendarLT14 
} 

このソリューションでは、介護者が選択世話人またはCalendarServiceクラスへの呼び出しを行うプログラマに完全に透過的に使用しているAndroidのバージョンに関連して、正しいコードに解決されたオブジェクトを返すことを意味します。

関連する問題