2013-10-13 6 views
0

Я использую следующий код в моем приложении принимать куки в WebView:java.lang.NoSuchMethodError: android.webkit.CookieManager.setAcceptFileSchemeCookies

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 не поддерживает этот метод.

ответ

0

Если вы прочитали документацию, вы увидите, что этот метод был введен в API12 (Android 3.1). Вы должны увеличить версию minSdk.

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

+0

Это исправить? – Simon

+0

Но тогда должен быть альтернативный способ кодирования этого ?! – toom

+0

Вы могли бы изучить источник и взять его оттуда? – Simon

1

Я имел такую ​​же проблему, в конечном итоге решить ее при помощи этого пакета:

платформы/Android/CordovaLib/SRC/орг/Apache/Cordova/двигатель/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); 
      } 
     } 

Было больно.

Смежные вопросы