Android cordova chromeview:未实现虚拟配额:: SpecialStoragePolicy

时间:2013-12-03 05:49:27

标签: android cordova chromium

我正在开发一个phonegap项目,其中包含一个覆盖有kinetic.js的画布,允许用户在图像上捏缩放和平移,然后在其上绘制注释。它在浏览器和Windows和苹果平板电脑上工作得很好,但当然安卓有点慢。

作为解决方案,我使用https://github.com/thedracle/cordova-android-chromeview发布了该应用。在切换我的主java类以使用ChromeView作为webview之后,我在启动时收到此错误:

12-03 13:21:09.083: E/chromium(13917): [ERROR:aw_browser_context.cc(191)] Not implemented reached in virtual quota::SpecialStoragePolicy* android_webview::AwBrowserContext::GetSpecialStoragePolicy()

通过代码库调试后,看起来错误在这里触发:

private void setNativeContentsClientBridge(int nativeContentsClientBridge) {
    mNativeContentsClientBridge = nativeContentsClientBridge;
}

(AwContentsClientBridge.java第36行)。

我试图找出nativeContentsClientBridge int是什么。我的价值是1611312352,但我没有一个代表什么的概念。

我的直觉是Chrome浏览器缺少访问localstorage的实现。我发现了这个错误:

https://github.com/pwnall/chromeview/issues/27

有人遇到同样的事情,但没有解决方案。

求助,这是我的主要活动类:

package com.companion;

import org.apache.cordova.Config;
import org.apache.cordova.CordovaActivity;

import us.costan.chrome.ChromeSettings;
import us.costan.chrome.ChromeView;
import android.os.Bundle;

public class CompanionApp extends CordovaActivity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        ChromeView chromeView = new ChromeView(CompanionApp.this);

        ChromeSettings settings = chromeView.getSettings(); 
        settings.setJavaScriptEnabled(true); 
        settings.setDatabaseEnabled(true); 
        settings.setDomStorageEnabled(true);

        setContentView(chromeView);
        super.loadUrl(Config.getStartUrl());
    }
}

感谢您的帮助, 霭

1 个答案:

答案 0 :(得分:0)

不知道它是否正常,但似乎没有在Chromium基本代码中实现某个方法:https://github.com/01org/pa-chromium/blob/master/android_webview/browser/aw_browser_context.cc

这是特定的方法:

quota::SpecialStoragePolicy* AwBrowserContext::GetSpecialStoragePolicy() {
  // TODO(boliu): Implement this so we are not relying on default behavior.
  NOTIMPLEMENTED();
  return NULL;
}

我希望它有所帮助:)