problema de base de datos de acceso a HTML5 WebView HTML

trabajo en una aplicación que incorpora un WebView y mostrar una página HTML5.

cuando se abre la página html en la base de datos de Android chrome Browser.the fue crear normal.

pero cuando ejecuto esta aplicación, la base de datos no puede crear. parece que la página html no puede crear la base de datos en WebView.

¿Alguien sabe por qué?

aquí está mi código de actividad:

public class efan_NewsReader extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WebView myWebView=(WebView)findViewById(R.id.my_webview); myWebView.setWebViewClient(new WebViewClient()); WebSettings settings = myWebView.getSettings(); settings.setJavaScriptEnabled(true); settings.setDomStorageEnabled(true); settings.setDatabaseEnabled(true); settings.setAppCacheEnabled(false); myWebView.loadUrl("http://10.10.35.47:8080/html5test/test.htm"); }} 

aquí está mi código fuente de la página HTML5:

  <html manifest="mymanifest.manifest"> <head> <meta http-equiv="Content-Type" content="text/html; content="no-cache" charset=utf-8" /> <script type="text/javascript" src="js/jquery-1.6.1.min.js"></script> <script> $(document).ready(function(){ databaseTest(); }); function databaseTest(){ //open database var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS testHtml (id unique, contentText)'); tx.executeSql('INSERT INTO testHtml (contentText) VALUES ("insert data test!")'); }); db.transaction(function(tx){ tx.executeSql('SELECT * FROM testHtml',[],function(tx,result){ var len=result.rows.length; var msg = "<p>Found rows: " + len + "</p>"; $("#testinfo").append(msg); },null); }); } </script> </head> <body> <div>here is test info:</div> <div id="testinfo"></div> </body> 

Tratar :

 settings.setDatabaseEnabled(true); String dbPath = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath(); settings.setDatabasePath(dbPath); 

Y en WebChromeClient:

 myWebView.setWebChromeClient(new WebChromeClient() { @Override public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { quotaUpdater.updateQuota(estimatedSize * 2); } } 

Deberia estar bien 😉

nuevo WebChromeClient () estaba lanzando un error de constructor así que lo hice de esta manera. WebView privado WebView;

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_web); webView = (WebView) findViewById(R.id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDatabaseEnabled(true); webView.getSettings().setDomStorageEnabled(true); //String sDataPath = "/data/data/" + webView.getContext().getPackageName() + "/databases/"; String sDataPath = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath(); webView.getSettings().setDatabasePath(sDataPath); webView.getSettings().setDatabaseEnabled(true); webView.getSettings().setSavePassword(true); webView.getSettings().setAllowContentAccess(true); webView.getSettings().setAllowFileAccess(true); webView.setWebViewClient(new Callback()); webView.setWebChromeClient(new webChromeClient()); webView.loadUrl("http://www.yahoo.com"); } private class Callback extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return (false); } } private class webChromeClient extends WebChromeClient { @Override public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { quotaUpdater.updateQuota(5 * 1024 * 1024); } } 

Es probable que la cuota predeterminada sea 0, por lo que onExceededDatabaseQuota es un onExceededDatabaseQuota

  • Dipaly farsi texto en la web de android (para los teléfonos que no apoyan farsi)
  • Android WebView getElementById ('math') no funciona dinámicamente
  • ¿Cómo puedo reproducir video html5 en línea en un WebView?
  • ¿Hay una manera de pasar un mensaje de un navegador de Android a una aplicación?
  • Guardar / restaurar estado de android webview
  • Android - JavaScript: el evento touchstart no se activa hasta que se amplía o se desplaza por la página
  • Enlaces que no funcionan dentro de un WebView debido a 'X-Frame-Options' establecido en 'SAMEORIGIN'
  • WebView oculta el teclado virtual durante loadUrl (), lo que significa que un teclado no puede permanecer abierto mientras llama a javascript
  • Android WebView con incrustaciones iframe no se muestra en 4.2.2 ni en la parte inferior
  • Android: guarda el nombre de usuario y la contraseña de WebView (como Google Chrome)
  • Botón de retroceso y avance para webview en android. ¿cómo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.