複数のSDKのバージョン間でのAndroid ContactsContractと建物
質問
私は、すべての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) {
}
所属していません StackOverflow