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

Reply via email to