Sweet! Mark. Thanks for covering this. I don't see it solved anywhere on the Net or developer.android.com.
Tim On Thu, Nov 26, 2009 at 7:42 AM, Mark Murphy <mmur...@commonsware.com> wrote: > Tim Jowers wrote: >> Is there an API to determine the phone's version of Android? For now, >> I'm using try-catch. Sucky but works. > > android.os.Build.VERSION.SDK. Or, if you're only worrying about 1.6 and > newer, use SDK_INT instead of SDK. > >> Also, my 2.0 built APK does not run on my G1 phone. Maybe it's >> something I've done but I haven't dug into it. Maybe that's what you >> meant by "intelligent" class loading.... do you mean Class.forName() >> or Class.loadClass() or whatever its called instead of import >> blahblh;? > > Well, you'll need to look at your stack trace. You can get that from adb > logcat, DDMS, or the DDMS perspective in Eclipse. IIRC, using a class > that references 2.0 APIs in a 1.5/1.6 environment will give you a > VerifyError. > > Using Class.forName() is one technique to create an application that can > use ContactsContract. Or, do something like this: > > abstract class ContactsAdapterBridge { > abstract ListAdapter buildNameAdapter(Activity a); > abstract ListAdapter buildPhonesAdapter(Activity a); > abstract ListAdapter buildEmailAdapter(Activity a); > > public static final ContactsAdapterBridge INSTANCE=buildBridge(); > > private static ContactsAdapterBridge buildBridge() { > int sdk=new Integer(Build.VERSION.SDK).intValue(); > > if (sdk<5) { > return(new OldContactsAdapterBridge()); > } > > return(new NewContactsAdapterBridge()); > } > } > > This is a fragment of a sample that I'll be uploading to github tomorrow > sometime (I hope). NewContactsAdapterBridge uses ContactsContract; > OldContactsAdapterBridge uses Contacts. So long as you don't try > *loading* a class that uses 2.0 APIs, you won't get a VerifyError. The > 2.0-referencing class can still be in the APK, though. > > -- > Mark Murphy (a Commons Guy) > http://commonsware.com | http://twitter.com/commonsguy > > Android Training in US: 11-15 January 2010: http://onlc.com > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to android-developers@googlegroups.com > To unsubscribe from this group, send email to > android-developers+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en