2013-08-26 20 views
7

Ich schreibe meine erste App in Phonegap und ich habe es auf einem Android-Gerät getestet. Ich glaube, ich habe die entsprechende Erlaubnis erteilt:Phonegap Android Internet funktioniert nicht

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

Aber die Karte wird nicht angezeigt. Ich versuche, einen Breiten- und Längengrad von einem Web-Service zu erhalten und damit eine Flagge auf einer Google-Karte zu setzen. Ich glaube, das Problem ist tatsächlich mit dem Internetzugang, als würde ich dies über Visual Studio als Website ausführen, der Dienst gibt die Koordinaten zurück und die Karte wird angezeigt. Wenn die App jedoch kompiliert wird und diese Website in der App-Webansicht ausgeführt wird, werden die Koordinaten nicht zurückgegeben und es wird keine Karte angezeigt.

Ich habe auch eine Tabelle hinzugefügt, um die zurückgegebenen Koordinaten anzuzeigen, wieder werden sie in einem Browser angezeigt, sind aber in der laufenden App leer. Hat jemand eine Idee, warum der Webview keine Verbindung zum Internet herstellen und die erforderlichen Daten zurückgeben könnte? Ich habe die tatsächliche Adresse des Web-Service entfernt, aber ich weiß, dass es in Ordnung ist, wie es in einem Browser funktioniert.

HTML-Seite:

<!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> 
+1

erlauben Sie Zugriff-Herkunft * auf config.xml –

+0

Das hat den Trick, danke. Da Sie zuerst waren, wenn Sie es als Antwort hinzufügen, werde ich es als richtig markieren. Vielen Dank. – collusionbdbh

Antwort

8

das Anprobieren config.xml :

Plaform -> Android -> res -> xml -> config.xml

Plaform -> ios -> config.xml

Plaform -> WP7 -> config.xml

Plaform -> WP8 - > config.xml

<access origin="*" /> 
+0

Ich habe mich selbst getötet, weil ich keine Daten aus dem Internet bekommen habe, und ich konnte die Lösung für 1 Monat nicht bekommen !!!! Danke vielmals!!! – rafi

3

Vergewissern Sie sich im folgenden festgelegt haben res/xml/config.xml:

<access origin="*" /> 
+0

Ich habe mich selbst getötet, weil ich keine Daten aus dem Internet bekommen habe, und ich konnte die Lösung für 1 Monat nicht bekommen !!!! Danke vielmals!!! – rafi

+0

Ich habe keinen Ordner namens 'xml' in' www/res'. Ich habe eine 'config.xml' im www-Ordner. Sollte ich es dort hinzufügen ..? wenn ja dann unter was ..? – shashwat

6

ich hatte das gleiche Problem, und hatte folgende config.xml hinzuzufügen.

<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> 
+0

Können Sie bitte erklären, warum dies Collusionbdbh mit ihrem Problem helfen würde? –

+4

Neue Cordova Android-Projekte richten das Whitelist-Plugin standardmäßig ein. Wenn Sie auf eine neue phonegap-Version (und eine neue cordova-Version) upgraden, bleibt Ihre config.xml unberührt, aber die cordova-plugin-whitelist wird Ihren Plugins hinzugefügt und verweigert den Internet-Zugang, da Sie kein Whitelist-Setup hatten. –

+0

Mein Problem gelöst! Vielen Dank. Ich suchte überall nach einer Lösung, die funktionierte, anstatt einfach hinzuzufügen –

Verwandte Themen