支持弃用和新 API
Support deprecated and new API
有什么方法可以在对 Android 的同一方法调用中同时支持已弃用的和新的 API?我正在使用 Lollipop 版本似乎已弃用的相机 API,所以我尝试这样处理它:
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 版本在创建此类型的 class 实例时崩溃。
感谢您的帮助!
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//handler lollipop and higher
} else {
//earlier api calls
}
简单地将代码放在 class 中不会使任何 Android 2.0+ 设备崩溃 - 代码实际上需要 运行 才能崩溃。检查以确保所有 Lollipop 特定代码都包含在版本检查中。
有什么方法可以在对 Android 的同一方法调用中同时支持已弃用的和新的 API?我正在使用 Lollipop 版本似乎已弃用的相机 API,所以我尝试这样处理它:
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 版本在创建此类型的 class 实例时崩溃。
感谢您的帮助!
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//handler lollipop and higher
} else {
//earlier api calls
}
简单地将代码放在 class 中不会使任何 Android 2.0+ 设备崩溃 - 代码实际上需要 运行 才能崩溃。检查以确保所有 Lollipop 特定代码都包含在版本检查中。