在做WebView页面截长图功能的过程中,由于API
WebView.enableSlowWholeDocumentDraw()
的调用,出现了一个异常:Call requires API level 21 (current min is 16)
关于页面截长图功能,感兴趣的话可以看我的另一篇博文:Android实现截屏和截长图功能的几种方法
出现这个异常的原因:项目的minSdkVersion是16,但是上述API调用要求的最低API版本是21。android lint说会“警告此应用程序所针对的所有版本中没有可用的调用”,也就是会出现版本兼容问题,在21以下版本的系统中,应用调用上述API会崩溃。
消除此警告的办法也很简单:在调用上述API的方法体外加注释即可:
@Target(21)
但还需要在API方法调用时做系统版本判断,以在21以下版本的系统中解决调用崩溃的问题:
if (Build.VERSION.SDK_INT >= 21) {
WebView.enableSlowWholeDocumentDraw();
}
要消除上述警告,还有一个注释可用,略有区别:
@SuppressLint("NewApi")
区别在于:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
抱歉,博客做了下迁移,本文继续阅读请访问:Android bug:@TargetApi(apiVersion) : Call requires API level 21 (current min is 16)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
在实现WebView页面截长图功能时遇到API兼容性问题,调用需要API 21,但项目最小支持API为16。通过添加@TargetApi注解可以消除lint警告,但仍需在API调用前进行版本判断,防止在低版本系统中崩溃。文章探讨了@TargetApi和@SuppressLint的使用区别,并提示全文已迁移。
947

被折叠的 条评论
为什么被折叠?



