在基于旧版本的Android(2.2)构建时如何使用新的API(JavascriptInterface)

在基于旧版本的Android(2.2)构建时如何使用新的API(JavascriptInterface),android,Android,我正在完成一个原本打算在Froyo上运行的老项目 所以我用2.2来编译它,一切都很好 现在,我需要在该项目上使用更新的API,即JavascriptInterface 显然,如果我根据2.2JavascriptInterface进行编译,将无法识别,并给出一个错误 但是如果我针对17进行编译,JavascriptInterface不再出现问题,但是我从不再受支持或已更新的API中得到了大量其他错误 请问在这种情况下我该怎么办 根据17进行编译时出现的错误有: UrlInterceptHand

我正在完成一个原本打算在Froyo上运行的老项目

所以我用2.2来编译它,一切都很好

现在,我需要在该项目上使用更新的API,即
JavascriptInterface

显然,如果我根据2.2
JavascriptInterface
进行编译,将无法识别,并给出一个错误

但是如果我针对17进行编译,
JavascriptInterface
不再出现问题,但是我从不再受支持或已更新的API中得到了大量其他错误

请问在这种情况下我该怎么办


根据17进行编译时出现的错误有:

  • UrlInterceptHandler无法解析为类型
  • 类型MailService的方法setForeground(布尔)未定义
  • 类型编辑器必须实现继承的抽象方法SharedReferences.Editor.putStringSet(String,Set)
  • 类型存储必须实现继承的抽象方法SharedReferences.getStringSet(String,Set)
我正在完成一个原本打算在Froyo上运行的老项目

不,它应该运行在Android 1.6或更高版本上。它可能已经能够在安卓2.2上运行了。但考虑到你的错误,这个代码库是古老的

现在我需要在该项目上使用一个更新的API,即JavascriptInterface

仅当您的
android:targetSdkVersion
为17或更高版本时

但是,我从不再受支持或已更新的API中获得了大量其他错误

你得把它们修好

UrlInterceptHandler无法解析为类型 类型MailService的方法setForeground(布尔)未定义

这些在Android2.0中被弃用,显然现在已经从SDK中完全删除<代码>设置前景()被替换为
开始前景()
;我真的不知道
UrlInterceptHandler
是用来做什么的

类型编辑器必须实现继承的抽象方法SharedReferences.Editor.putStringSet(String,Set) 类型存储必须实现继承的抽象方法SharedReferences.getStringSet(String,Set)


目前尚不清楚代码为何要尝试实现
SharedReferences
SharedReferences.Editor
。虽然这是可能的--我亲自做的--但这真的很不寻常。要么重新实现应用程序的该部分以不创建自定义的
SharedReferences
实现,要么扩展它以支持所需的方法。

还有哪些其他错误?您可以选择:要么修复错误并使其与17兼容(最新版本为19 btw),要么使用
JavascriptInterface
。在清单中声明minSdkVersion=“8”,targetSdkVersion=“19”,并在代码中检查每个不兼容API的构建版本,如下所示:如果(Build.VERSION.SDK\u INT>=Build.VERSION\u code.JELLY\u BEAN)然后调用与JB兼容的api,否则调用相应的api。