2012-07-23 43 views
3

我使用煎茶觸摸2.0.1,我試圖打開使用SQLite數據庫:window.openDatabase引發TypeError:對象[對象DOMWindow]有沒有方法「的openDatabase」在Android

var db = window.openDatabase("mydatabase", "1.0", "mydatabase", 2000000); 

在iPhone/IOS模擬器可以工作。在Android設備或仿真器我得到一個異常:

TypeError: Object[object DOMWindow] has no method 'openDatabase' 

我使用煎茶建立本地應用(雖然我迅速失去信心...),所以我不使用PhoneGap的。

煎茶包裝創建和AndroidManifest.xml文件,但我不能看到

android.permission.WRITE_EXTERNAL_STORAGE 

我不知道設置權限,如果這是問題,但!

任何幫助非常感謝,因爲這是驅使我悄悄地堅果。

編輯:這裏的JS - 這是生成的煎茶觸摸的部分應用:

Ext.application({ 
name: 'MyApp', 

requires: [ 
    'Ext.MessageBox' 
], 

views: ['Main'], 

icon: { 
    '57': 'resources/icons/Icon.png', 
    '72': 'resources/icons/Icon~ipad.png', 
    '114': 'resources/icons/[email protected]', 
    '144': 'resources/icons/[email protected]' 
}, 

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); 


    } 

} 

});

+0

做這個問題的幫助? http://stackoverflow.com/questions/2474475/how-do-i-call-window-opendatabase-from-a-webview-hosted-in-an-android-applicatio/2474524#2474524 – Nerd 2012-07-23 19:04:40

+0

我看到這個,但假定它是Java而不是Javascript(WebSettings settings = myWebView.getSettings();)。 – MattD 2012-07-23 19:32:35

+0

@Nerd這可以解釋爲什麼他的數據庫調用會被阻塞,但不是爲什麼'openDatabase'甚至不存在。 – jbabey 2012-07-23 19:38:32

回答

1

看起來不像它在您的環境中可用。這裏有一個簡單的方法來檢查:

if (window.openDatabase) { 
    // available 
} else { 
    // not available 
} 

Offline SQL is currently available in Safari, Google Chrome, on the iPhone and Palm’s WebOS (both for its applications and browser-based content).

http://creativepark.net/1191

+0

如果我在瀏覽器(Chrome)中運行該應用程序,則可以(因爲它可以打開數據庫)。我非常確定,在Android中可以使用sqlite - 我認爲問題更多地發生在Sencha。 – MattD 2012-07-23 19:36:11

相關問題