这些是我从Developer console获得的堆栈跟踪:
android.database.sqlite.SQLiteException: cannot rollback - no transaction is active (code 1)
at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method)
at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:555)
at android.database.sqlite.SQLiteSession.endTransactionUnchecked(SQLiteSession.java:439)
at android.database.sqlite.SQLiteSession.endTransaction(SQLiteSession.java:401)
at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:522)
at android.webkit.WebViewDatabaseClassic.initDatabase(WebViewDatabaseClassic.java:165)
at android.webkit.WebViewDatabaseClassic.init(WebViewDatabaseClassic.java:130)
at android.webkit.WebViewDatabaseClassic.access$000(WebViewDatabaseClassic.java:35)
at android.webkit.WebViewDatabaseClassic$1.run(WebViewDatabaseClassic.java:109)
还有一个:
android.database.sqlite.SQLiteException: no such table: formurl: , while compiling: SELECT _id FROM formurl WHERE (url == ?)
at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:68)
at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:127)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:94)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:53)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1686)
at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1571)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1527)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1607)
at android.webkit.WebViewDatabase.getFormData(WebViewDatabase.java:1212)
at android.webkit.WebView$RequestFormData.run(WebView.java:7764)
at java.lang.Thread.run(Thread.java:856)
我在我的一个屏幕中使用WebView。以下是我的网页设置:
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSavePassword(false);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setUseWideViewPort(false);
webView.getSettings().setBuiltInZoomControls(true);
webView.clearCache(true);
deleteDatabase("webview.db");
deleteDatabase("webviewCache.db");
我将WebChromeClient和WebViewClient设置为:
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
return super.onJsAlert(view, url, message, result);
}
@Override
public boolean onJsPrompt(WebView view, String url, String message,
String defaultValue, JsPromptResult result) {
return super.onJsPrompt(view, url, message, defaultValue,
result);
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
//My code to show progress bar
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
//My code to hide progress bar
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
}
});
可能是什么问题?
答案 0 :(得分:0)
尝试设置此内容并查看
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setDatabaseEnabled(true);
mWebView.getSettings().setDatabasePath("/data/data/pkgname/databases/");
请阅读此处了解更多信息 http://developer.android.com/reference/android/webkit/WebSettings.html
答案 1 :(得分:0)
你就是这样做的 -
context.deleteDatabase("webview.db");
context.deleteDatabase("webviewCache.db");
webView.clearCache(true);
并且您知道如何获取活动的上下文。
PS - 您可能只想使用webview.clearCache(true);
检查您的应用
因为我认为它会自动删除webView.db/webviewCache.db
。所以在webView.clearCache(true);
之后不需要