Cordova 5.3.1 Android应用无法访问互联网

Ria*_*ian 4 android cordova

我想在android上部署一个非常简单的cordova应用程序.它应该启动,然后通过角度$ http拉入国家列表并显示它们.

由于某种原因它无法访问互联网,为了简化测试,我添加了一个图像标签,在网络上显示图像.图像也没有显示.

我也无法与jsconsole.com建立联系.

我在真实设备和模拟器上测试过它.在这两种情况下,应用程序都无法访问网络,但我可以在设备和模拟器上浏览网络.

我在config.xml中包含了以下内容

<access origin="*" />
Run Code Online (Sandbox Code Playgroud)

我还检查了生成的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" />
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

这是完整的配置文件:

<?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>
Run Code Online (Sandbox Code Playgroud)

这是清单文件:

<?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>
Run Code Online (Sandbox Code Playgroud)

Del*_*Del 14

如果您使用的是cordova 5或更高版本,则应使用白名单插件

您还应该将它添加到config.xml:

<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />
Run Code Online (Sandbox Code Playgroud)

如果你愿意,你可以更具体.

并将此元数据添加到index.html或主页面

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我不知道白名单插件,我已经包含了那些并添加了你建议的元标记.不幸的是,这还没有解决问题.我现在正在尝试新的模拟器并获取http状态404而不是状态0. (3认同)