Phonegap(在线构建)应用程序 - 没有互联网连接和网络状态

时间:2015-10-03 22:16:59

标签: android jquery cordova phonegap-build

我的第一个jquery移动应用程序包含需要来自互联网资源的数据,例如公共谷歌日历和亚马逊联盟小部件,但只有当我在我的Chrome浏览器或使用html5应用程序测试器的Kindle Fire设备上进行测试时,它才有效。 如果我用在线Phonegap构建android release apk,那么Kindle和其他Android设备就像联想手机一样无法在应用程序中连接到Internet。我已经阅读了本期的所有主题,发现建议在config.xml中使用<access origin="*" subdomains="true" />,但它无效。 我还在应用程序中添加了代码片段,如:

    if (navigator.onLine) {
  $("#ifonline").append("Online");
} else {
   $("#ifonline").append("offline");

}

var isOffline = 'onLine' in navigator && !navigator.onLine;

if ( isOffline ) {
    $("#ifonline2").append("Status: offline");
}
else {
    $("#ifonline2").append("online");
}

但结果却一无所获。我的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          = "com.myapp.myapptodo"
        versionCode = "10" 
        version     = "1.0.0" >
    <name>myapp</name>

    <description>
        myapp is very good but can't find that &@ĐäĐ wifi!
    </description>

    <author href="https://mysite" email="mymail">
        Ceatos
    </author>

    <gap:plugin name="org.apache.cordova.network-information" />

    <feature name="http://api.phonegap.com/1.0/geolocation"/>
    <feature name="http://api.phonegap.com/1.0/media"/>
    <feature name="http://api.phonegap.com/1.0/network"/>
    <feature name="http://api.phonegap.com/1.0/notification"/>
    <feature name="InAppBrowser">
    <param name="android-package" value="org.apache.cordova.InAppBrowser"/>
    </feature>

    <feature name="NetworkStatus">
    <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" />
</feature>

    <access origin="*" subdomains="true" />

我有一个工作的wifi网络,设备已连接到它。我该怎么办?

2 个答案:

答案 0 :(得分:7)

添加白名单插件

<gap:plugin name="cordova-plugin-whitelist" source="npm" />

您可能需要在头上添加此元标记

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src *  'unsafe-inline'; script-src *  'unsafe-inline'; media-src *">

并将这两行添加到config.xml

<allow-navigation href="http://*/*" />
<allow-intent href="https://*/*" />

答案 1 :(得分:1)

为了检查互联网连接,我使用此功能:

function checkConnection(){
            var networkState = navigator.connection.type;
            if(Connection.NONE==networkState)
                return "<p>No connection</p>";
}

为了能够使用它,你必须以这种方式添加网络状态插件:

cordova plugin add cordova-plugin-network-information

您的AndoidManifest文件应包含以下两行:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />