私は 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);
}
}
});