cordova 3.0:Android:未定义连接

cordova 3.0:Android:未定义连接,cordova,phonegap-plugins,Cordova,Phonegap Plugins,我第一次尝试使用ApacheCordova3.0 下载lib,解压cordova android和cordova js并创建了一个项目: ./create ~/Documents/andriod-projects/HelloWorld com.x.HelloWorld HelloWorld - OK res/xml/config.xml <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager" />

我第一次尝试使用ApacheCordova3.0

下载lib,解压cordova android和cordova js并创建了一个项目:

./create ~/Documents/andriod-projects/HelloWorld com.x.HelloWorld HelloWorld
- OK
res/xml/config.xml

<plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager" />
当我在andriod上模拟项目时,我在LogCat中得到了
错误:未定义连接


我错过了什么?我必须附加一个.js才能声明连接?

我正在玩同样的东西,我认为您需要使用cordova CLI安装这些功能。

我遇到了同样的问题,但能够解决它。按照Phonegap连接文档运行以下命令似乎不起作用:

$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git
$ cordova plugin rm org.apache.cordova.core.network-information
相反,我不得不使用:

$ phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git

一旦我这么做了,它就成功了。

如果你已经包含了插件,并且遇到了同样的问题,那么可能是你包含插件的顺序

为了让插件正常工作,我必须在添加平台后加入插件

$ cordova create

$ cordova platform add android 

$ cordova plugin add org.apache.cordova.network-information
我决定:

$ phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git
Android 4.2.2 Api 17上的Phonegap 3.0也有同样的问题

尝试删除并重新安装连接插件,尝试了两个命令:Cordova或Phonegap local,但均无效

我在日志中注意到的是错误消息之后的以下内容:

10-11 14:31:40.360:E/Web控制台():未捕获引用错误:未定义连接
10-11 14:31:40.380:D/CordovaNetworkManager():连接类型:wifi
所以我认为,在成功地从CordovaNetworkManager()初始化Connection.type之后,它实际上看起来像是一个异步回调,但不应该是这样

因此,我尝试了以下方法:

var networkState=navigator.connection.type;
setTimeout(函数(){
networkState=navigator.connection.type;
警报(“网络状态=”+网络状态);
变量状态={};
状态[Connection.UNKNOWN]=“未知连接”;
状态[Connection.ETHERNET]=“以太网连接”;
状态[Connection.WIFI]=“WIFI连接”;
状态[Connection.CELL_2G]=“CELL 2G Connection”;
状态[Connection.CELL_3G]=“CELL 3G Connection”;
状态[Connection.CELL_4G]=“CELL 4G Connection”;
状态[Connection.CELL]=“单元通用连接”;
状态[Connection.NONE]=“无网络连接”;
警报('连接类型:'+状态[网络状态]);
}, 500);
我知道这看起来有点愚蠢,但每次都有效。 它首先调用navigator.connection.type,然后在500毫秒后运行整个函数,让CordovaNetworkManager有时间初始化connection.type

未捕获引用错误:未定义连接

与缺少“连接”对象有关,根据我使用corodva 3.1.0的经验,即使在benka建议的延迟之后,该对象也不可用。使用navigator.connection对象的常量可以解决此特定问题,如下所示:

var states = {};
states[navigator.connection.UNKNOWN]  = 'Unknown connection';
states[navigator.connection.ETHERNET] = 'Ethernet connection';
states[navigator.connection.WIFI]     = 'WiFi connection';
states[navigator.connection.CELL_2G]  = 'Cell 2G connection';
states[navigator.connection.CELL_3G]  = 'Cell 3G connection';
states[navigator.connection.CELL_4G]  = 'Cell 4G connection';
states[navigator.connection.CELL]     = 'Cell generic connection';
states[navigator.connection.NONE]     = 'No network connection';
不幸的是,在我的例子中,这只是android上网络状态问题的开始

navigator.connection.type
将始终返回未知连接的0。在android模拟器和设备上。对我来说,一个可行的解决方法是直接调用插件类:

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    var conn = checkConnection();
    alert("Connection:"+conn);


}
function checkConnection(){
        var networkState;
        var test = cordova.exec(
                function(winParam) {networkState = winParam;},
                function(error) {alert("Network Manager error: "+error);},
                "NetworkStatus",
                "getConnectionInfo",
                []
        );
        return networkState;
}
这段代码在一个函数中有一个丑陋的networkState赋值,该赋值可能在checkConnection返回语句之后异步执行,但当本机代码在execute函数中返回PluginResult时,它就起作用了。返回的networkState值与navigator.connection不匹配。常数,如:

navigator.connection.WIFI

您可以在这里看到插件源代码中返回的值:

对于我来说,添加插件是不够的,并且没有解决我的问题

然后在添加插件后,我在CLI中执行了此操作

$ cordova build

一切都很完美!确保您的/www文件具有更新的文件,因为它将用于删除平台/xxx/www文件

我面临同样的问题,搜索此问题时我发现了此问题。我尝试了很多想法,但成功的是: 1-卸载网络信息插件 2-在CMD->cordova构建中 3-再次安装插件 4-再次构建


在此之后,连接示例工作正常

最后的一点是,没有加载引用的js插件。 cordova_plugins.js

您的项目可能不在正确的文件夹中。。。但在任何情况下,您都可以直接复制到已知的文件夹中

assets/www/plugins/org.apache.cordova.network-information

network.js“

Connection.js“


并加载到您的html中

我正在使用cordova 3.4.1添加插件org.apache.cordova.network-information如果要解决我的问题,请尝试以下操作:

cordova插件添加org.apache.cordova.network information

我没有更改代码的任何部分,如帮助所述:


对我来说,这是因为我在$(function(){})内调用了checkConnection()。 它应该被称为

document.addEventListener("deviceready", function(){
    checkConnection();
});

现在科尔多瓦的天3.5似乎

<access origin="*" />

是正确的CORS config.xml条目


请注意,关于它是“源”而不是“uri”和“子域”的澄清,正如我之前所认为的那样。

我对Cordova 3.5.0有同样的问题:
navigator.connection.type
始终返回
0
,而
navigator.onLine
true
。这令人沮丧

然后我发现问题只出现在我的手机上(安卓2.3),并且它在emulator上工作


我猜这个问题也与Android版本有关

我在
phonegap3.5.0上也遇到了同样的问题:
navigator.connection.type
返回我
0
(未知连接)和
navigator.onLine
(来自HTML5)始终是
真的

这个问题是由手机引起的(可能我手机上的Android版本太旧了),因为它与emulator和tablet一起工作(Android在哪里
document.addEventListener("deviceready", function(){
    checkConnection();
});
<access origin="*" />