我正在开发Android Studio中的Android项目,它支持从版本8到19.我想使用此方法getBlockSizeLong()。现在,如果我使用getBlockSize(),我会看到已弃用的取消行,如附图所示。如果我使用getBlockSizeLong(),我会收到错误,说这个方法不能用于版本8!即使我使用版本检查,取消行仍将保留。这是丑陋的编码。我现在该怎么办?
答案 0 :(得分:5)
有多种方法可以解决这个问题。要删除已弃用方法的“删除线”,您可以使用注释@SuppressWarnings("deprecation")
。
@SuppressWarnings("deprecation")
private void getBlockSize(StatFs stat){
long blockSize = stat.getBlockSize();
}
为了删除新API调用的红色下划线,您可以使用注释@TargetAPI(int)
@TargetApi(18)
@SuppressLint("NewApi")
private void getBlockSizeNewApi(StatFs stat){
long blockSize = stat.getBlockSizeLong();
}
要确定要调用哪种方法,可以使用如下的Helper-Method:
public static boolean isVersionOrGreaterThan(int version){
return Build.VERSION.SDK_INT >= version;
}
答案 1 :(得分:2)
您可以使用:
@SuppressWarnings("deprecation")
private void getBlockSize(StatFs stat){
long blockSize = stat.getBlockSize();
}
或
@TargetApi(18)
public void yourMethod()
{
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
long blockSize;
if (currentapiVersion >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2){
// Do something for JELLY_BEAN_MR2 and above versions
blockSize = stat.getBlockSizeLong();
} else{
// do something for phones running an SDK before JELLY_BEAN_MR2
blockSize = stat.getBlockSize();
}
}