尽管 Android 向下兼容不好,但是一个程序还是可以在多个平台上跑的。向下兼容不好,
接口改变,新的平台上不能用旧的 API,旧的平台更不可能用新的 API,不等于一个平台需
要一个 APK。可以在高 SDK 上开发,并在程序中作版本判断,低版本运行环境使用旧的
API。
例如要开发一个显示通话记录的程序,需要兼容 1.6~2.2,我们知道不同的平台 SDK
level 不同,1.5 是 3,1.6 是 4,2.2 是 8。对应的可以使用 android.os.Build 进行判断。源代码如
下:
if(Build.VERSION.SDK_INT <= 4)
{
Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" +
Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" +
Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();
}
这样就可以在不同的分支中使用不同的 API。下面是一个简单的通讯录示例。其中可
以看到在 2.2 下,1.6 的接口 Contacts.Phones 会被自动划上横线,表示在此版本下已经无效。
if(Build.VERSION.SDK_INT<=4)
{
Toast.makeText(this,"version"+Build.VERSION.RELEASE+":"+
Build.VERSION.SDK_INT,Toast.LENGTH_SHORT).show();
String[]columns=newString[]{Phones.NAME, Phones.NUMBER};
ContentResolvercr=this.getContentResolver();
Cursorc=cr.query(Contacts.Phones.CONTENT_URI,
null,null,null,Contacts.People.DEFAULT_SORT_ORDER);