Android多版本兼容示例

尽管Android向下兼容不好,但是一个程序还是可以在多个平台上跑的。向下兼容不好,接口改变,新的平台上不能用旧的API,旧的平台更不可能用新的API,不等于一个平台需要一个APK。可以在高SDK上开发,并在程序中作版本判断,低版本运行环境使用旧的API

         例如要开发一个显示通话记录的程序,需要兼容1.6~2.2,我们知道不同的平台SDK level不同,1.53,1.64,2.28。对应的可以使用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 = new String[] {Phones.NAME, Phones.NUMBER};

                 ContentResolver cr = this.getContentResolver();

            Cursor c= cr.query(Contacts.Phones.CONTENT_URI,

                               null, null,null, Contacts.People.DEFAULT_SORT_ORDER);

            c.moveToFirst();

            SimpleCursorAdapter adapter = new SimpleCursorAdapter(

                               this,

                               R.layout.main,

                               c,

                               new String[]{Contacts.Phones.NAME,Contacts.Phones.NUMBER},

                               new int[]{R.id.TextView01,R.id.TextView02});

            this.setListAdapter(adapter);

        }

        else

        {

                 Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();

                 ContentResolver cr = this.getContentResolver();

            Cursor c= cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

                               null, null,null, null);

            SimpleCursorAdapter adapter = new SimpleCursorAdapter(

                               this,

                               R.layout.main,

                               c,

                               new String[]{ ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER},

                               new int[]{R.id.TextView01,R.id.TextView02});

            this.setListAdapter(adapter);

        }


         上面的源代码实际上仅仅显示版本而已,并没有任何区别, 1.6 2.2 上显示内容不同。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值