【发布时间】:2012-07-22 01:20:18
【问题描述】:
我正在使用 Sencha Touch 2.0.1 并尝试使用以下方法打开 SQLite 数据库:
var db = window.openDatabase("mydatabase", "1.0", "mydatabase", 2000000);
在 iPhone/IOS 模拟器上可以使用。在 Android 设备或模拟器上出现异常:
TypeError: Object[object DOMWindow] has no method 'openDatabase'
我正在使用 Sencha 构建原生应用程序(尽管我正在迅速失去信心......)所以我没有使用 PhoneGap。
Sencha 的打包创建和 AndroidManifest.xml 文件,但我看不到为
设置的权限android.permission.WRITE_EXTERNAL_STORAGE
我不确定这是否是问题所在!
非常感谢任何帮助,因为这让我悄悄发疯。
编辑:这是 JS - 它是 Sencha Touch 生成应用程序的一部分:
Ext.application({
name: 'MyApp',
requires: [
'Ext.MessageBox'
],
views: ['Main'],
icon: {
'57': 'resources/icons/Icon.png',
'72': 'resources/icons/Icon~ipad.png',
'114': 'resources/icons/Icon@2x.png',
'144': 'resources/icons/Icon~ipad@2x.png'
},
isIconPrecomposed: true,
startupImage: {
'320x460': 'resources/startup/320x460.jpg',
'640x920': 'resources/startup/640x920.png',
'768x1004': 'resources/startup/768x1004.png',
'748x1024': 'resources/startup/748x1024.png',
'1536x2008': 'resources/startup/1536x2008.png',
'1496x2048': 'resources/startup/1496x2048.png'
},
launch: function() {
// Destroy the #appLoadingIndicator element
Ext.fly('appLoadingIndicator').destroy();
// Initialize the main view
Ext.Viewport.add(Ext.create('MyApp.view.Main'));
//
try {
var db = window.openDatabase("mydatabase", "1.0", "mydatabase", 2000000);
if ( !db ) {
var m3 = new Ext.MessageBox();
m3.alert("db test!", "openDatabase failed!");
} else {
var m3 = new Ext.MessageBox();
m3.alert("db test!", "openDatabase ok!");
}
}
catch(err){
var m2 = new Ext.MessageBox();
m2.alert("db test!", "exception caught: " + err.name + ":" + err.message);
}
}
});
【问题讨论】:
-
这个问题有帮助吗? stackoverflow.com/questions/2474475/…
-
我看到了这个但假设它是 Java 而不是 Javascript (WebSettings settings = myWebView.getSettings(); )。
-
@Nerd 这可以解释为什么他的数据库调用会被阻止,但不能解释为什么
openDatabase甚至不存在。 -
我觉得错误在于被引用的
context。如果可以的话,你能发布你的 JS 吗? -
我添加了代码 sn-p - 它是更广泛的 sencha touch 生成应用程序的一部分(我添加了 openDatabase 调用)。
标签: javascript android sencha-touch-2 opendatabase