4

アプリをすべての Android バージョンで実行する必要がありますが、Contacts API は 2.0 で変更されました。

SDK 1.6 以前では android.provider.Contacts を使用して連絡先 DB を照会しましたが、これは 2.0 では機能しません。

代わりに、2.0 では android.provider.ContactsContract を使用します。これには問題があります。ContactsContract のコードがある場合、アプリは 1.6 以前ではビルドされません。

アプリの 2 つの個別のバージョン (1.6 以下用と 2.0 以降用) が必要ですか、それともこれを回避する方法はありますか?

4

1 に答える 1

8

Java Reflection を使用して、Android で両方のバージョンをサポートできます。面白いことに、あなたの質問に対する答えは、この正確な問題を解決するために使用されるリフレクションに関する最近の質問にあります

Uri baseUri = Contacts.Phones.CONTENT_FILTER_URL;
try {
    Class<?> c = Class.forName("android.provider.ContactsContract$PhoneLookup");
    baseUri = (Uri) c.getField("CONTENT_FILTER_URI").get(baseUri);
} 
    catch (Exception e) {
}
于 2010-01-11T21:28:18.377 に答える