2013-08-14 9 views
5

In una normale applicazione Web Android la dimensione massima per un database WebSQL è normalmente di circa 8 MB. In un'app web ibrida che sto facendo vorrei aumentare questo limite. Come potrei fare per farlo?Aumentare la dimensione della quota WebSQL in una WebView

Sembra che WebStorage potrebbe avere qualcosa a che fare con esso, ma l'unico metodo che posso vedere ci che sembra per impostare le dimensioni, setQuotaForOrigin, è segnato deprecato.

codice di esempio (che non è deprecato) è benvenuto :)

+0

Sto cercando la soluzione esattamente opposta. iOS7 ha un "bug" che genera un'eccezione di sicurezza quando si tenta di superare il limite di dimensioni. Quindi ho bisogno di ridimensionare il mio DB per evitare questo. Pubblicherò qualsiasi cosa trovo al riguardo. – Chepech

risposta

5

La quota per un'applicazione Web sembra essere diversa da quella di un'app ibrida (come in qualcosa che è in esecuzione all'interno di una vista). Indipendentemente da ciò, implementando quanto segue nella sottoclasse android.app.Activity raddoppierete la quota fino a quando non si fermerà a circa 48 MB.

@Override 
public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { 
    quotaUpdater.updateQuota(estimatedSize * 2); 
} 

All'utente non verrà chiesto di interagire quando ciò accade.

1

Si consiglia di guardare a questo altro problema su how to increase quota limit.

Sembra che la modifica delle dimensioni sia solo un problema per gli utenti che hanno già creato un DB locale, questo perché non è possibile modificare la dimensione del DB durante l'esecuzione di upgrade scripts for versioning. Detto questo, basta solo bisogno di cambiare il formato nello script di inizializzazione (codice in JavaScript):

var size = 10 * 1024 * 1024; // changed from 5 to 10MB 
var db = openDatabase("oversized_db", "v1.1", "Ten MB DB", size); 

tener conto che questo avrà effetto solo i nuovi utenti. Tutti gli utenti che hanno precedentemente creato un DB con una dimensione diversa devono cancellare la cache (si ha il controllo della cache su una webView quindi non è così male), ma tutti i dati precedenti andrebbero persi (a meno che non lo si passi manualmente al nuovo DB con codice nativo). Nel mio caso devo fare lo stesso ma diminuire le dimensioni. Questo avrebbe risolto il problema.

Spero che questo aiuti.

+0

questo è qualcos'altro. questo non influenzerà la quota impostata dal sistema operativo Android. questo imposta solo la dimensione del database esistente. e devo ancora vedere che effettivamente fa _ tutto. in tutte le prove che ho fatto, quella dimensione è solo una sciocchezza. Posso impostare una dimensione di 10 byte e posso ancora riempirlo fino alla quota è stata superata. Aggiungerò una risposta ora con maggiori informazioni. – oligofren

+0

Ecco come è fatto per una normale app web. Non sono sicuro di come lo stai facendo. Ma i limiti sono solitamente impostati dal browser, questo è il modo per tentare di creare un DB di una dimensione impostata. – Chepech

+0

So che è il modo in cui è fatto per una normale app web. Sto solo dicendo che l'argomento per la dimensione non cambia. Dovrei fare la cosa prevista - impostare la dimensione, ma sembra essere ignorata dalla maggior parte dei browser. la dimensione massima reale è impostata dal browser/vista. – oligofren