I'm developing crossplatform application, using cordova 3.0.0. The project is created using cordova-cli and built for android platform. It successfully using file and file-transfer plugins at the moment. The problem comes when attempting to use Storage API. According to PhoneGap documentation, Storage API is built into cordova since version 3.0. The problem is, when I'm trying to interact with Storage API

var db = window.openDatabase(name, "1.0", name, size);


Cordova's PluginManager logs error: 

exec() call to unknown plugin: Storage


So, the question is: Why does cordova tries to invoke Storage via PluginManager?

Also posting my config.xml:

&lt;?xml version='1.0' encoding='utf-8'?&gt;
&lt;widget id="io.cordova.helloCordova" version="2.0.0" xmlns="http://www.w3.org/ns/widgets"&gt;
    &lt;name&gt;Hello Cordova&lt;/name&gt;
    &lt;description&gt;
        A sample Apache Cordova application that responds to the deviceready event.
    &lt;/description&gt;
    &lt;author email="dev@cordova.apache.org" href="http://cordova.io"&gt;
        Apache Cordova Team
    &lt;/author&gt;
    &lt;content src="index.html" /&gt;
    &lt;feature name="App"&gt;
        &lt;param name="android-package" value="org.apache.cordova.App" /&gt;
    &lt;/feature&gt;
    &lt;feature name="File"&gt;
        &lt;param name="android-package" value="org.apache.cordova.core.FileUtils" /&gt;
    &lt;/feature&gt;
    &lt;feature name="FileTransfer"&gt;
        &lt;param name="android-package" value="org.apache.cordova.core.FileTransfer" /&gt;
    &lt;/feature&gt;
    &lt;access origin="*" /&gt;
    &lt;preference name="useBrowserHistory" value="true" /&gt;
    &lt;preference name="exit-on-suspend" value="false" /&gt;
    &lt;preference name="fullscreen" value="true" /&gt;
    &lt;preference name="webviewbounce" value="true" /&gt;
&lt;/widget&gt;


and AndroidManifest.xml

&lt;?xml version='1.0' encoding='utf-8'?&gt;
&lt;manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" android:windowSoftInputMode="adjustPan" package="com.isd.immersivereader" xmlns:android="http://schemas.android.com/apk/res/android"&gt;
    &lt;supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /&gt;
    &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
    &lt;application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name"&gt;
        &lt;activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:name="ImmersiveReader" android:theme="@android:style/Theme.Black.NoTitleBar"&gt;
            &lt;intent-filter&gt;
                &lt;action android:name="android.intent.action.MAIN" /&gt;
                &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
            &lt;/intent-filter&gt;
        &lt;/activity&gt;
    &lt;/application&gt;
    &lt;uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17" /&gt;
    &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt;
&lt;/manifest&gt;


The version of cordova.js, I'm using is 3.0.0-0-ge670de9 (as far as I know it's a head revision) and it does have Storage defenition.

If more information is required - just let me know).

Thank you in advance.


Question: Quantity based discount for single product in Expresso Store
Answer: Use this bulk discounts add-on, does exactly what you need. Create a new field type and discounts are controlled per product and at definable quantities.

Does need Matrix installed though.