6

According to the phone gap docs I should be able to add the network cocnnection plugin by simply adding <gap:plugin name="org.apache.cordova.network-information" /> to config.xml

I'm using the example js function to test the connection and it does not seem to work. LogCat is showing 'cannot read property 'type' of undefined' which makes me think the plugin was never added.

function checkConnection() {
var networkState = navigator.connection.type;

var states = {};
states[Connection.UNKNOWN]  = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI]     = 'WiFi connection';
states[Connection.CELL_2G]  = 'Cell 2G connection';
states[Connection.CELL_3G]  = 'Cell 3G connection';
states[Connection.CELL_4G]  = 'Cell 4G connection';
states[Connection.CELL]     = 'Cell generic connection';
states[Connection.NONE]     = 'No network connection';

alert('Connection type: ' + states[networkState]);

}

config.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<widget xmlns   = "http://www.w3.org/ns/widgets"
    xmlns:gap   = "http://phonegap.com/ns/1.0"
    id          = "#myapp#"
    versionCode = "10" 
    version     = "1.0.0" >

<!-- versionCode is optional and Android only -->

<name>#myapp#"</name>

<description>
    #myapp#"
</description>

<author href="#myapp#"" email="#myapp#"">#myapp#"</author>

<!-- Customize your app and platform with the preference element. -->
<preference name="phonegap-version"           value="3.1.0" />          <!-- all: current version of PhoneGap -->
<preference name="orientation"                value="default" />        <!-- all: default means both landscape and portrait are enabled -->
<preference name="target-device"              value="universal" />      <!-- all: possible values handset, tablet, or universal -->
<preference name="fullscreen"                 value="false" />           <!-- all: hides the status bar at the top of the screen -->
<preference name="prerendered-icon"           value="true" />           <!-- ios: if icon is prerendered, iOS will not apply it's gloss to the app's icon on the user's home screen -->
<preference name="ios-statusbarstyle"         value="black-opaque" />   <!-- ios: black-translucent will appear black because the PhoneGap webview doesn't go beneath the status bar -->
<preference name="detect-data-types"          value="true" />           <!-- ios: controls whether data types (such as phone no. and dates) are automatically turned into links by the system -->
<preference name="exit-on-suspend"            value="false" />          <!-- ios: if set to true, app will terminate when home button is pressed -->
<preference name="auto-hide-splash-screen"    value="true" />           <!-- ios: if set to false, the splash screen must be hidden using a JavaScript API -->
<preference name="disable-cursor"             value="false" />          <!-- blackberry: prevents a mouse-icon/cursor from being displayed on the app -->
<preference name="android-minSdkVersion"      value="14" />              <!-- android: MIN SDK version supported on the target device. MAX version is blank by default. -->
<preference name="android-installLocation"    value="auto" />           <!-- android: app install location. 'auto' will choose. 'internalOnly' is device memory. 'preferExternal' is SDCard. -->
<preference name="splash-screen-duration"     value="10000"/>


<!-- Plugins -->

<!-- Core plugins
<gap:plugin name="org.apache.cordova.battery-status" />
<gap:plugin name="org.apache.cordova.camera" />
<gap:plugin name="org.apache.cordova.media-capture" />
<gap:plugin name="org.apache.cordova.console" />
<gap:plugin name="org.apache.cordova.contacts" />
<gap:plugin name="org.apache.cordova.device" />
<gap:plugin name="org.apache.cordova.device-motion" />
<gap:plugin name="org.apache.cordova.device-orientation" />
<gap:plugin name="org.apache.cordova.dialogs" />
<gap:plugin name="org.apache.cordova.file" />
<gap:plugin name="org.apache.cordova.file-transfer" />
<gap:plugin name="org.apache.cordova.geolocation" />
<gap:plugin name="org.apache.cordova.globalization" />
<gap:plugin name="org.apache.cordova.inappbrowser" />
<gap:plugin name="org.apache.cordova.media" />
<gap:plugin name="org.apache.cordova.splashscreen" />
<gap:plugin name="org.apache.cordova.vibration" />
-->
<gap:plugin name="org.apache.cordova.network-information" />

<!-- Third party plugins -->
<!-- A list of available plugins are available at https://build.phonegap.com/plugins -->
<!-- 
    <gap:plugin name="com.phonegap.plugins.barcodescanner" />
-->

<!-- Define app icon for each platform.     -->

<icon src="icon.png" />
<icon src="tools/images/icons/36.png"   gap:platform="android"    gap:density="ldpi" />
<icon src="tools/images/icons/48.png"   gap:platform="android"    gap:density="mdpi" />
<icon src="tools/images/icons/72.png"   gap:platform="android"    gap:density="hdpi" />
<icon src="tools/images/icons/96.png"   gap:platform="android"    gap:density="xhdpi" />
<icon src="tools/images/icons/57.png"   gap:platform="ios"        width="57" height="57" />
<icon src="tools/images/icons/72.png"   gap:platform="ios"        width="72" height="72" />
<icon src="tools/images/icons/114.png"  gap:platform="ios"        width="114" height="114" />
<icon src="tools/images/icons/144.png"  gap:platform="ios"        width="144" height="144" />
<icon src="tools/images/icons/64.png"   gap:platform="webos" />
<icon src="tools/images/icons/48.png"   gap:platform="winphone" />
<icon src="tools/images/icons/173.png"  gap:platform="winphone"   gap:role="background" />

<!-- Define app splash screen for each platform.    -->
<gap:splash src="tools/images/splash/android/320x426.9.png" gap:platform="android" gap:density="ldpi" />
<gap:splash src="tools/images/splash/android/320x470.9.png" gap:platform="android" gap:density="mdpi" />
<gap:splash src="tools/images/splash/android/480x640.9.png" gap:platform="android" gap:density="hdpi" />
<gap:splash src="tools/images/splash/android/720x960.9.png" gap:platform="android" gap:density="xhdpi" />
<gap:splash src="tools/images/splash/ios/320x480.jpg"       gap:platform="ios"     width="320" height="480" />
<gap:splash src="tools/images/splash/ios/640x960.jpg"       gap:platform="ios"     width="640" height="960" />
<gap:splash src="tools/images/splash/ios/768x1024.jpg"      gap:platform="ios"     width="768" height="1024" />
<gap:splash src="tools/images/splash/ios/1024x768.jpg"      gap:platform="ios"     width="1024" height="768" />
<gap:splash src="tools/images/splash/ios/320x480.jpg"       gap:platform="winphone" />
<!--
    Define access to external domains.

    <access />            - a blank access tag denies access to all external resources.
    <access origin="*" /> - a wildcard access tag allows access to all external resource.

    Otherwise, you can specify specific domains:
-->
<access origin="*"/> <!-- allow local pages -->
<!--
    <access origin="http://phonegap.com" />                    - allow any secure requests to http://phonegap.com/
    <access origin="http://phonegap.com" subdomains="true" />  - same as above, but including subdomains, such as http://build.phonegap.com/
-->

Im new to phonegap, and have never used a phonegap plugin before.

I'm using phonegap version 3.1

Milk Man
  • 1,256
  • 13
  • 21
  • are you building locally or through build.phonegap.com? – Dawson Loudon Mar 11 '14 at 22:03
  • Are you calling this function after the `deviceReady` event has fired? – Dawson Loudon Mar 11 '14 at 22:06
  • Hmmm... running out of suggestions, I use this exact code in many of my apps. Could, you add your config.xml source to your question, please? – Dawson Loudon Mar 11 '14 at 22:19
  • Just added my config file – Milk Man Mar 11 '14 at 22:24
  • Well, that looks correct to me (and I've used it a lot), my only other suggestion is to try the phonegap build support forum (http://community.phonegap.com/nitobi). If you post your issue and include your APPID (from phonegap build) they will build your specific app and check it from their end. This could be an issue with their current service. – Dawson Loudon Mar 11 '14 at 22:29
  • Thanks for your help Dawson. Can you vote up the question to see if anyone else can help out – Milk Man Mar 11 '14 at 22:38

2 Answers2

1

Turns out I need to add cordova.js to index.html. EXACTLY like so:

<script type="text/javascript" charset="utf-8" src="cordova.js"></script>

If you are using the build.phonegap.com web service; which I am. The Phonegap builder will find and include the correct cordova.js file for each build (Android, Win phone, iOS). You DO NOT need to actually have the cordova.js file in the package you upload to build.phonegap.com... the service adds it for you dynamically :)(:

Thanks to @george-siggouroglou for the help in another question.

Community
  • 1
  • 1
Milk Man
  • 1,256
  • 13
  • 21
  • If you use phonegap build, you should include phonegap.js instrad of cordova.js. (phonegap.js will automatically load cordova.js and like cordova.js, phonegap.js is added automatically) – QuickFix Mar 12 '14 at 12:57
  • what's the difference? – Milk Man Mar 13 '14 at 19:43
  • does extra stuff related to phonegap before loading cordova.js, but no idea what exactly... – QuickFix Mar 14 '14 at 07:56
  • According to mwbrooks (works for adobe) people should use cordova.js instead of phonegap.js. phonegap.js is for legacy support. See: https://github.com/phonegap/phonegap-cli/issues/134 – Milk Man Mar 14 '14 at 15:39
  • I realise this is an old thread but tought it worth pointing out for anyone stumbling upon this question, that you no longer need to add a reference to phonegap or cordova as this is automatically injected via the Phonegap Build service. – Phill Healey Nov 28 '14 at 21:30
-1

I think you are missing this- For checking network connection available or not add following in your config.xml - add permissions in plugin.xml and plugins name in config.xml

Plugin to check Network connection For Android -

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager" />

For IOS -

<plugin name="NetworkStatus" value="CDVConnection" />

This may help you PHONEGAP DOCS

Suhas Gosavi
  • 2,170
  • 19
  • 40
  • 1
    The phonegap docs does not say that you have to add those lines. It says that installing the plugin will AUTOMATICALLY add those lines in the platform-specific config.xml files. – QuickFix Mar 12 '14 at 12:55