如何为 Android phonegap 1.8.0 应用启用 cookie?

Posted

技术标签:

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

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

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

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

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

非常感谢。

干杯, 西尼萨。

【问题讨论】:

【参考方案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 的项目并重新启动应用程序。

【讨论】:

以上是关于如何为 Android phonegap 1.8.0 应用启用 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

如何为多平台phonegap/cordova开发组织代码

如何为 Phonegap 应用程序设置图标以显示在 Spotlight 上?

如何为 webapp 构建 phonegap 应用程序?

如何为 phonegap 中的日期字段设置 DateFormat

如何为phonegap混合应用程序授予相机权限?

使用 Android 配置 Phonegap 3.0