4

バージョン 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 が必要な場合は、OS のバージョンを確認してこのメ​​ソッドを呼び出します。

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

そう; 私のアプリでは、バージョンが 2.2 以下の場合。このメソッドは呼び出されません。私の質問は、なぜこのエラー ログが表示されるのですか?

4

1 に答える 1

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();
    }
于 2012-09-24T19:30:47.183 に答える