我正在尝试在 android 上部署一个非常简单的 cordova 应用程序。它应该启动,然后通过角度 $http 拉入国家列表并显示它们。
由于某些原因它无法访问互联网,为了简化测试,我添加了一个图像标签来显示网络上的图像。图片也不显示。
我也无法连接到 jsconsole.com。
我已经在真实设备和模拟器上对其进行了测试。在这两种情况下,应用程序都无法访问网络,但我可以在设备和模拟器上浏览网络。
我在 config.xml 中包含了以下内容
<access origin="*" />
我还检查了生成的 AndroidManifest.xml 文件,它包含以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
我错过了什么?
这里是完整的配置文件:
<?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.domain.app" version="1.0.0">
<name>app</name>
<description>
A sample Apache Cordova application that responds to the
deviceready
event.
</description>
<author href="http://www.eclipse.org/thym" email="thym-dev@eclipse.org">
Eclipse.org -
Thym
</author>
<content src="index.html" />
<access origin="*" />
<preference name="fullscreen" value="true" />
<preference name="webviewbounce" value="true" />
<preference name="LogLevel" value="VERBOSE" />
<feature name="App">
<param name="android-package" value="org.apache.cordova.App" />
</feature>
<feature name="Compass">
<param name="android-package"
value="org.apache.cordova.deviceorientation.CompassListener" />
</feature>
<feature name="Device Orientation">
<param name="id" value="cordova-plugin-device-orientation" /></feature>
<feature name="Device">
<param name="android-package" value="org.apache.cordova.device.Device" />
<param name="id" value="cordova-plugin-device" />
</feature>
<feature name="Notification">
<param name="android-package" value="org.apache.cordova.dialogs.Notification" />
<param name="id" value="cordova-plugin-dialogs" /></feature>
<feature name="NetworkStatus">
<param name="android-package"
value="org.apache.cordova.networkinformation.NetworkManager" />
</feature>
<feature name="Network Information">
<param name="id" value="cordova-plugin-network-information" />
</feature>
<engine name="android" version="4.1.0"/>
</widget>
这是 list 文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.domain.app"
android:hardwareAccelerated="true"
android:versionCode="100008"
android:versionName="1.0.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="22" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:hardwareAccelerated="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:supportsRtl="true" >
<activity
android:name="com.domain.app.MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
android:label="@string/activity_name"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Black.NoTitleBar"
android:windowSoftInputMode="adjustResize" >
<intent-filter android:label="@string/launcher_name" >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
请您参考如下方法:
如果您使用的是 cordova 5 或更高版本,则应使用 whitelist plugin
您还应该将此添加到您的 config.xml 中:
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />
如果你愿意,你可以更具体一些。
并将此元数据添加到您的 index.html 或主页
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">