【问题标题】:How to enable cookies for Android phonegap 1.8.0 app?如何为 Android phonegap 1.8.0 应用启用 cookie?
【发布时间】:2012-06-18 12:43:05
【问题描述】:

我知道要在 phonegap 原生应用程序中使用 cookie,必须有一段代码可以启用它。

当使用 xcode 4 为 iOS 构建 phonegap 时,phonegap 模板中有这样一段代码。

您能否告诉我,我需要放置哪些代码以及在哪里为 Android phonegap 1.8.0 应用启用 cookie?

请注意,我正在使用 eclipse Indigo 3.7.2 构建应用程序。

非常感谢。

干杯, 西尼萨。

【问题讨论】:

    标签: android cookies cordova


    【解决方案1】:

    如果您尝试使用本地 cookie (file://),您必须让父 Phonegap 项目接受本地 cookie。为此,您的 PhoneGap 项目中应该有一个名为 youappname.java 的文件,可能包含以下内容或类似内容:

    import android.os.Bundle;
    import org.apache.cordova.*;
    
    public class App extends DroidGap {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/index.html");
    }
    }
    

    将其修改为如下示例:

    import android.os.Bundle;
    import android.webkit.CookieManager;
    import org.apache.cordova.*;
    
    public class App extends DroidGap {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        CookieManager.setAcceptFileSchemeCookies(true);
        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/index.html");
    }
    }
    

    【讨论】:

    • setAcceptFileSchemeCookies 在 android 版本 10 上不可用。那里是默认开启的吗?
    • 如果您想在 API lvl 12 之前使用它,请尝试在 super.loadUrl(...); 正下方添加 CookieManager.getInstance().setAcceptCookie(true); 而不是上面的示例。这应该从 API lvl 1 开始工作。
    • 对于12以下的API级别,CookieManager.getInstance().setAcceptCookie(true); super.loadUrl(...) 正下方不起作用。我错过了什么吗?
    • 如何让 cookie 在与 Web 服务器的 ajax 通信中可用?
    【解决方案2】:

    你真的想做

    import android.webkit.CookieManager;
    import org.apache.cordova.*;
    
    public class MainActivity extends DroidGap {
    
      @Override
      public void onCreate(Bundle savedInstanceState) {
          try{
              CookieManager.setAcceptFileSchemeCookies(true);
          }catch(Throwable e){}
    

    因为 CookieManager 在旧版 Android 上不存在

    【讨论】:

      【解决方案3】:

      如果我没有记错的话,Phonegape 的模板会通过从 web 视图(类似于:super.loadUrl("file:///android_asset/www/index.html");)加载您的启动网页(例如:index.html)来加载它。后者在主活动(“.java”文件)中声明。

      因此,首先,找到加载您的网络应用程序的指令。然后,在webview.loadUrl 之前添加以下行,以便您可以获得类似的内容:

      CookieSyncManager.createInstance(this);
      CookieSyncManager.getInstance().startSync();
      webView = (WebView) findViewById(R.id.webview);
      webview.getSettings().setJavaScriptEnabled(true);
      super.loadUrl("file:///android_asset/www/index.html");
      

      最后,刷新 Android 的项目并重新启动应用程序。

      【讨论】:

        猜你喜欢
        • 2012-01-11
        • 1970-01-01
        • 2014-03-21
        • 1970-01-01
        • 2011-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-18
        相关资源
        最近更新 更多