我需要将CookieManager类用于版本为9或更高版本的设备。我的代码看起来像这样;
public class HttpUtils {
private static CookieManager cookie_manager = null;
@TargetApi(9)
public static CookieManager getCookieManager() {
if (cookie_manager == null) {
cookie_manager = new CookieManager();
CookieHandler.setDefault(cookie_manager);
}
return cookie_manager;
}
}
当我在2.2模拟器上运行时;我有这个错误日志;
Could not find class 'java.net.CookieManager', referenced from method com.application.utils.HttpUtils.getCookieManager
当我需要CookieManager时,我会通过检查os版本来调用此方法;
if (Build.VERSION.SDK_INT >= 9)
...
因此;在我的应用程序中,如果版本是2.2或更低;永远不会调用此方法。我的问题是为什么我看到这个错误日志?
答案 0 :(得分:0)
如果我在SDK检查之外的调用Activity的代码中创建一个HttpUtils实例,我可以在2.2模拟器上复制它。例如:
HttpUtils utils = new HttpUtils();
if (Build.VERSION.SDK_INT >= 9)
{
Object test = utils.getCookieManager();
}
如果我改为直接调用静态方法,则不会发生:
if (Build.VERSION.SDK_INT >= 9)
{
Object test = HttpUtils.getCookieManager();
}
如果您的HttpUtils类中有其他非静态内容,则必须将CookieManager部分移动到另一个辅助类,并且只能静态调用它...或者在SDK检查后实例化HtppUtils:
if (Build.VERSION.SDK_INT >= 9)
{
HttpUtils utils = new HttpUtils();
Object test = utils.getCookieManager();
}