0

アプリで次のコードを使用して、Web ビューで Cookie を受け入れます。

CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().startSync();
CookieManager.setAcceptFileSchemeCookies(true);
CookieManager.getInstance().setAcceptCookie(true);

これを Android 4.x で実行すると、正常に動作します。しかし、2.3.6 を使用して電話でテストしたところ、次のスタック トレースでクラッシュしました。

10-13 22:34:20.519: E/AndroidRuntime(2371): FATAL EXCEPTION: main
10-13 22:34:20.519: E/AndroidRuntime(2371): java.lang.NoSuchMethodError: android.webkit.CookieManager.setAcceptFileSchemeCookies
10-13 22:34:20.519: E/AndroidRuntime(2371):     at de.fblike.facebook.FacebookActivity.onCreate(FacebookActivity.java:28)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at android.os.Looper.loop(Looper.java:130)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at android.app.ActivityThread.main(ActivityThread.java:3683)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at java.lang.reflect.Method.invokeNative(Native Method)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at java.lang.reflect.Method.invoke(Method.java:507)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
10-13 22:34:20.519: E/AndroidRuntime(2371):     at dalvik.system.NativeStart.main(Native Method)

だから私は自問しています:どうすればこれを修復できますか?2.3.6 はこのメソッドをサポートしていないようです。

4

2 に答える 2

3

私は同じ問題を抱えていましたが、最終的にこのパッチで解決しました:

プラットフォーム/android/CordovaLib/src/org/apache/cordova/engine/SystemCookieManager.java:

         cookieManager = CookieManager.getInstance();

          //REALLY? Nobody has seen this UNTIL NOW?
 -        cookieManager.setAcceptFileSchemeCookies(true);

          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
 +            cookieManager.setAcceptFileSchemeCookies(true);
              cookieManager.setAcceptThirdPartyCookies(webView, true);
          }
      }

痛かった..

于 2016-09-24T02:17:14.307 に答える
1

ドキュメントを読むと、このメソッドは API12 (Android 3.1) で導入されたことがわかります。minSdk のバージョンを増やす必要があります。

http://developer.android.com/reference/android/webkit/CookieManager.html#setAcceptFileSchemeCookies(boolean)

于 2013-10-13T20:52:17.173 に答える