gpt4 book ai didi

java - 如何在向后兼容 android 的同时使用新类?

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:48 25 4
gpt4 key购买 nike

我需要为版本 9 或更高版本的设备使用 CookieManager 类。我的代码看起来像这样;

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 时,我通过检查操作系统版本来调用此方法;

if (Build.VERSION.SDK_INT >= 9)
...

所以;在我的应用程序中,如果版本是 2.2 或更低;永远不会调用此方法。我的问题是为什么我会看到此错误日志?

最佳答案

如果我在 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();
}

关于java - 如何在向后兼容 android 的同时使用新类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12438571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com