在android上为Ionic应用程序更改webview设置

时间:2016-02-09 21:00:53

标签: android cordova ionic-framework android-webview pouchdb

我在我的Ionic应用程序上使用pouchdb,目前正在处理DOMException code:18错误。 文档要求我更改android的设置。

修改 我发现我必须在MainActivity.java中进行这些更改 这是我写的代码。

import android.os.Bundle;
import org.apache.cordova.*;
import android.content.Context;
import android.view.Menu;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class MainActivity extends CordovaActivity
{
    WebView webView = null;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        webView  = (WebView) findViewById(R.id.webView);
        WebSettings settings = webView.getSettings();
        settings.setDatabaseEnabled(true);
        String databasePath = getContext().getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
        settings.setDatabasePath(databasePath);
        webView.setWebChromeClient(new WebChromeClient() {
          @Override
          public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize,
                                              long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
            quotaUpdater.updateQuota(estimatedSize * 2);
          }
        });
        // Set by <content src="index.html" /> in config.xml
        loadUrl(launchUrl);
    }
}

当我编译这个时,我得到错误 - R.id.webView - &gt;看来我的资源名称不正确,它无法在资源中找到webView。我搜索了平台/ android文件夹,但我找不到布局文件。 另外,我没有使用eclipse,我使用原子编辑器进行离子项目。

1 个答案:

答案 0 :(得分:0)

由于您没有在布局文件中定义webview,因此无法正常工作。

但你可以这样做:

    SystemWebView webView = null;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        webView  = (SystemWebView) appView.getView();
        WebSettings settings = webView.getSettings();
        settings.setDatabaseEnabled(true);
        String databasePath = appView.getContext().getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
        settings.setDatabasePath(databasePath);
        webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize,
                                                long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
                quotaUpdater.updateQuota(estimatedSize * 2);
            }
        });
        // Set by <content src="index.html" /> in config.xml
        loadUrl(launchUrl);
    }