我使用HTML5和JavaScript(包括JQTouch)构建了一个基本的手机应用程序,然后使用PhoneGap将其变成一个Android应用程序(经过许多创伤 - 似乎PhoneGap和Windows计算机相处得不太好)。
该应用在Chrome中运行良好,但在Android模拟器上,LogCat中出现以下错误:
06-07 21:38:51.711: DEBUG/WebCore(204): Console: ReferenceError: Can't find variable: openDatabase line: 9 source: file:///android_asset/www/handicap.js
这是指在handicap.js中的以下行:
db = openDatabase('Handicaps', '1.0', 'Handicaps', 65536);
这段代码的更广泛背景是:
// initialise all important functions
$(document).ready(function(){
$('#newrace form').submit(saveRace);
$('#newrace form').submit(setTitle);
$('#enterhandicaps form').submit(savePrediction);
$('#enterhandicaps form').submit(refreshEntries);
$('#calcraces').click(raceList);
// create database to hold data on predicted and actual times
db = openDatabase('Handicaps', '1.0', 'Handicaps', 65536);
db.transaction(
function(transaction) {
transaction.executeSql(
'CREATE TABLE IF NOT EXISTS predictions (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,racename TEXT NOT NULL, runner TEXT NOT NULL, prediction INTEGER, start TEXT, finish TEXT, position TEXT);'
);
transaction.executeSql(
'CREATE TABLE IF NOT EXISTS races (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,racename TEXT NOT NULL, date TEXT, distance REAL);'
);
transaction.executeSql(
'CREATE TABLE IF NOT EXISTS autocompletion (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,runner TEXT NOT NULL, value TEXT,racename TEXT NOT NULL);'
);
}
);
}
);
在查看其他在stackoverflow上遇到类似问题的人时,我尝试过仅使用2.2以下Android版本的建议,但这没有帮助。还有其他建议吗? 可能是我错过的非常明显的东西,因为我对此完全陌生。 如果有帮助,则网络浏览器表单中应用的完整代码位于https://github.com/fhr/Handicap-timer-app。
答案 0 :(得分:1)
您是否可以使用所有对phonegap.js等的引用以app格式共享您的应用代码?另外,我没有看到使用window对象的代码。根据phonegap apis,使用openDatabase()
的正确方法是var db = window.openDatabase()
。此外,如果您还可以提及您正在使用的pg版本,这将有所帮助。
答案 1 :(得分:0)
我认为它试图打开文件“file:///android_asset/www/handicap.js” 而不是db通常是// data / data // database / dbfile(通常没有扩展名)
请发布更多代码
我认为它是你使用的opendatabase。
答案 2 :(得分:0)
覆盖WebChromeClient对象中的onExceededDatabaseQuota方法。
@Override
public void onExceededDatabaseQuota(String url, String databaseIdentifier,
long currentQuota, long estimatedSize, long totalUsedQuota,
WebStorage.QuotaUpdater quotaUpdater) {
Log.d("test", "onExceededDatabaseQuota : " + " currentQuota=" + currentQuota
+ " estimatedSize=" + estimatedSize + " totalUsedQuota=" + totalUsedQuota);
quotaUpdater.updateQuota(estimatedSize * 2);
}