Phonegap Android internet not working

12,492

Solution 1

Try this on config.xml:

Plaform -> android -> res -> xml -> config.xml

Plaform -> ios -> config.xml

Plaform -> wp7 -> config.xml

Plaform -> wp8 -> config.xml

<access origin="*" />

Solution 2

I had the same problem, and had to add the following to config.xml.

<access origin="*" />
<plugin name="cordova-plugin-whitelist" version="1" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
    <allow-intent href="market:*" />
</platform>
<platform name="ios">
    <allow-intent href="itms:*" />
    <allow-intent href="itms-apps:*" />
</platform>

Solution 3

Make sure you have the following set in res/xml/config.xml:

    <access origin="*" />
Share:
12,492
collusionbdbh
Author by

collusionbdbh

Updated on June 26, 2022

Comments

  • collusionbdbh
    collusionbdbh almost 2 years

    I am writing my first app in Phonegap and I have been testing it on an Android device. I believe I have granted the appropriate permission:

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

    But the map is not showing up. I am trying to get a latitude and longitude from a web service and use this to put a flag on a Google map. I believe the issue is actually with the internet access, as if I run this through Visual Studio as a website, the service returns the coordinates and the map is displayed. However, when the app is compiled and that website is run inside the app webview the coordinates are not returned and no map is displayed.

    I also added a table to show the returned coordinates, again they are displayed in a browser but are blank in the running app. Does anyone have any idea why the webview wouldn't be able to connect to the internet and return the required data? I have removed the actual address of the web service but I know that is fine as it works in a browser.

    HTML page:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title></title>
        <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&amp;sensor=true"></script>
        <link rel="stylesheet" type="text/css" href="css/index.css" />
      </head>
      <body>
        <div class="app2">
          <div id="map" style="width: 200px; height: 150px"></div>
          <script type="text/javascript">
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.open("GET", "http://www.xxxxxxxx.com/mobile/iphone/xml/postal.asp?postal=33173", false);
            xmlhttp.send();
            xmlDoc = xmlhttp.responseXML;
            var myOptions = {
              zoom: 10,
              mapTypeId: google.maps.MapTypeId.ROADMAP,
            };
            var map = new google.maps.Map(document.getElementById("map"), myOptions);
            var lat = x[i].getElementsByTagName("latitude")[0].childNodes[0].nodeValue;
            var long = x[i].getElementsByTagName("longitude")[0].childNodes[0].nodeValue;
            var pos = new google.maps.LatLng(lat, long);
            var infowindow = new google.maps.InfoWindow({
              map: map,
              position: pos,
              content: "Postcode 33173(Lat:" + lat + ", Long:" + long + ")"
            });
            map.setCenter(pos);
          </script>
          <script>
            document.write("<table border='1'>");
            document.write("<tr><td>Postcode</td><td>latitude</td><td>longitude</td></tr>");
            var x = xmlDoc.getElementsByTagName("position");
            for (i = 0; i < x.length; i++) {
              document.write("<tr><td>33173</td><td>");
              document.write(x[i].getElementsByTagName("latitude")[0].childNodes[0].nodeValue);
              document.write("</td><td>");
              document.write(x[i].getElementsByTagName("longitude")[0].childNodes[0].nodeValue);
              document.write("</td></tr>");
            }
            document.write("</table>");
          </script>
        </div>
      </body>
    </html>
    

    Manifest:

    <?xml version='1.0' encoding='utf-8'?>
    <manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="1.0.0" android:windowSoftInputMode="adjustPan" package="dig.phonegap.loa_app" xmlns:android="http://schemas.android.com/apk/res/android">
      <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.CAMERA" />
      <uses-permission android:name="android.permission.VIBRATE" />
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
      <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
      <uses-permission android:name="android.permission.READ_PHONE_STATE" />
      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.RECEIVE_SMS" />
      <uses-permission android:name="android.permission.RECORD_AUDIO" />
      <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
      <uses-permission android:name="android.permission.READ_CONTACTS" />
      <uses-permission android:name="android.permission.WRITE_CONTACTS" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      <uses-permission android:name="android.permission.GET_ACCOUNTS" />
      <uses-permission android:name="android.permission.BROADCAST_STICKY" />
      <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="18" />
      <application android:allowBackup="false"
        android:hardwareAccelerated="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name">
      <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
        android:label="@string/app_name"
        android:name="HelloWorld"
        android:theme="@android:style/Theme.Black.NoTitleBar">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    </application>
    </manifest>
    
  • rafi
    rafi over 10 years
    i was killing myself for not getting data from internet, and i could not get the solution for 1 month!!!! thanks a lot!!!
  • rafi
    rafi over 10 years
    i was killing myself for not getting data from internet, and i could not get the solution for 1 month!!!! thanks a lot!!!
  • shashwat
    shashwat about 10 years
    I do not have a folder named xml inside www/res. I have a config.xml inside www folder. Should I add it there..? if yes then under what..?
  • John Odom
    John Odom almost 9 years
    Can you please explain why this would help collusionbdbh with their issue?
  • fastr.de
    fastr.de almost 9 years
    New Cordova Android projects set up the whitelist plugin per default. When you upgrade to a new phonegap version (and a new cordova version) your config.xml remains untouched, but the cordova-plugin-whitelist is added to your plugins and deny the internet-access because you didn't have a whiltelist setup.
  • Karim O.
    Karim O. about 8 years
    Solved my problem! Thanks. I was looking everywhere for a solution that worked instead of just adding <access origin="*" />