質問

私は、すべてのAndroidのバージョンで実行するために私のアプリが必要ですが、コンタクトのAPIは2.0に変更されます。

SDK 1.6以前では、私は連絡先DBを照会するandroid.provider.Contactsを使用しますが、これは

2.0では動作しません。

その代わり、2.0の私はandroid.provider.ContactsContractを使用しています。これは、問題を提示:私はContactsContractのコードを持っているとき、私のアプリは、1.6およびそれ以前用にビルドしません。

タグ?私は私のアプリの二つの別々のバージョン(<= 1.6と2.0とそれ以降のための1つに1つ)を持っている必要がありますか、これをやって回避する方法はありますか
役に立ちましたか?

解決

あなたはJavaのリフレクションを使用して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) {
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top