支持已弃用和新API

时间:2015-06-08 19:44:18

标签: android android-5.0-lollipop deprecated

有没有什么方法可以在Android的同一方法调用中同时支持已弃用的API和新API?我正在使用相机API,似乎已经弃用了Lollipop版本,所以我试着像这样处理它:

    if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP)
    {
       //Before Lollipop, use the Camera API since it still supported.
    }
    else
    {
        //Use the CameraManager
        try
        {
            for (int i= 0; i < _camera.getCameraIdList().length; i++)
            {
                System.out.println("Camera= " + _camera.getCameraIdList()[i]);
            }
        }
        catch (CameraAccessException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

但是这确实只是给了我错误Call requires API level 21 (current min is 15): android.hardware.camera2.CameraManager#getCameraIdList 我尝试过SupressLint和TargetApi,但是在创建这种类的类实例时,只会让设备运行更早(在Lollipop之前)Android版本崩溃。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
               //handler lollipop and higher 
            } else {
               //earlier api calls
            }

答案 1 :(得分:1)

只需在一个类中拥有代码就不会使任何Android 2.0+设备崩溃 - 代码实际上需要运行才能崩溃。检查以确保所有Lollipop特定代码都包含在版本检查中。