【问题标题】:phonegap plugin not working - connection undefinedphonegap 插件不工作 - 连接未定义
【发布时间】:2014-04-15 18:12:31
【问题描述】:

根据phone gap docs,我应该可以通过简单地将<gap:plugin name="org.apache.cordova.network-information" />添加到config.xml来添加网络连接插件

我正在使用example js function 来测试连接,但它似乎不起作用。 LogCat 显示 'cannot read property 'type' of undefined' 这让我觉得该插件从未添加过。

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/
-->

我是 phonegap 新手,之前从未使用过 phonegap 插件。

我使用的是 phonegap 3.1 版

【问题讨论】:

  • 您是在本地构建还是通过 build.phonegap.com 构建?
  • 你是在deviceReady事件触发后调用这个函数吗?
  • 嗯...建议用完了,我在我的许多应用程序中都使用了这个确切的代码。可以,请您将您的 config.xml 源添加到您的问题中吗?
  • 刚刚添加了我的配置文件
  • 嗯,这对我来说是正确的(而且我已经用过很多次了),我唯一的其他建议是尝试 phonegap 构建支持论坛 (community.phonegap.com/nitobi)。如果您发布您的问题并包含您的 APPID(来自 phonegap 构建),他们将构建您的特定应用程序并从他们的最后检查它。这可能是他们当前服务的问题。

标签: javascript cordova phonegap-plugins


【解决方案1】:

原来我需要将cordova.js 添加到 index.html。就像这样:

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

如果您使用的是build.phonegap.com 网络服务;我是谁。 Phonegap 构建器将为每个构建(Android、Win 手机、iOS)找到并包含正确的 cordova.js 文件。您不需要实际上需要在您上传到build.phonegap.com 的包中包含cordova.js 文件...服务会为您动态添加它:)(:

感谢@george-siggouroglou 在another question 的帮助。

【讨论】:

  • 如果你使用phonegap构建,你应该在cordova.js中包含phonegap.js。 (phonegap.js会自动加载cordova.js,和cordova.js一样,phonegap.js会自动添加)
  • 有什么区别?
  • 在加载cordova.js之前做了一些与phonegap相关的额外工作,但不知道究竟是什么......
  • 根据 mwbrooks(适用于 adobe),人们应该使用 cordova.js 而不是 phonegap.js。 phonegap.js 用于遗留支持。见:github.com/phonegap/phonegap-cli/issues/134
  • 我意识到这是一个旧线程,但对于遇到这个问题的人来说,值得指出的是,您不再需要添加对 phonegap 或 cordova 的引用,因为这是通过 Phonegap Build 自动注入的服务。
【解决方案2】:

我认为你错过了这个 - 检查可用的网络连接或不在你的 config.xml 中添加以下内容 - 在 plugin.xml 中添加权限,在 config.xml 中添加插件名称

检查网络连接的插件 对于 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" />

对于 IOS -

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

这可能会帮助你PHONEGAP DOCS

【讨论】:

  • phonegap 文档并没有说您必须添加这些行。它说安装插件将自动在特定于平台的 config.xml 文件中添加这些行。
猜你喜欢
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多