我的第一个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网络,设备已连接到它。我该怎么办?
答案 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" />