2013-08-26 12 views
7

Sto scrivendo la mia prima app in PhoneGap e l'ho testata su un dispositivo Android. Credo di aver concesso l'autorizzazione appropriata:Internet Android per telefono non funziona

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

Ma la mappa non viene visualizzata. Sto cercando di ottenere latitudine e longitudine da un servizio web e usarlo per mettere una bandiera su una mappa di Google. Credo che il problema sia in realtà con l'accesso a Internet, come se lo eseguissi tramite Visual Studio come sito Web, il servizio restituisce le coordinate e viene visualizzata la mappa. Tuttavia, quando l'app viene compilata e il sito Web viene eseguito all'interno della visualizzazione Web dell'app, le coordinate non vengono restituite e non viene visualizzata alcuna mappa.

Ho anche aggiunto una tabella per mostrare le coordinate restituite, di nuovo vengono visualizzate in un browser ma sono vuote nell'app in esecuzione. Qualcuno ha qualche idea del perché la webview non sarebbe in grado di connettersi a internet e restituire i dati richiesti? Ho rimosso l'indirizzo effettivo del servizio web, ma so che va bene in quanto funziona in un browser.

pagina

HTML:

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

manifesto:

<?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

consente l'accesso all'origine * su config.xml –

+0

Questo ha fatto il trucco, grazie. Dal momento che sei stato il primo se lo aggiungi come risposta, lo contrassegnerò come corretto. Grazie. – collusionbdbh

risposta

8

Prova questo config.xml :

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

Plaform -> ios -> config.xml

Plaform -> WP7 -> config.xml

Plaform -> WP8 - > config.xml

<access origin="*" /> 
+0

mi stavo ammazzando per non aver ricevuto dati da internet, e non ho potuto ottenere la soluzione per 1 mese !!!! molte grazie!!! – rafi

3

Assicurarsi di aver il seguente insieme in res/xml/config.xml:

<access origin="*" /> 
+0

mi stavo ammazzando per non aver ricevuto dati da internet, e non ho potuto ottenere la soluzione per 1 mese !!!! molte grazie!!! – rafi

+0

Non ho una cartella chiamata 'xml' all'interno di' www/res'. Ho un 'config.xml' nella cartella www. Dovrei aggiungerlo lì ..? se sì allora sotto cosa ...? – shashwat

6

ho avuto lo stesso problema, e ha dovuto aggiungere quanto segue al 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> 
+0

Puoi spiegare perché questo potrebbe aiutare collusionbdbh con il loro problema? –

+4

I nuovi progetti Cordova per Android impostano il plug-in per la whitelist per impostazione predefinita. Quando esegui l'aggiornamento a una nuova versione di PhoneGap (e una nuova versione di Cordova) il tuo file config.xml rimane intatto, ma la whitelist di plug-in-cordova viene aggiunta ai plug-in e nega l'accesso a Internet perché non hai una configurazione dell'elenco indirizzi. –

+0

Risolto il mio problema! Grazie. Stavo cercando ovunque una soluzione che funzionasse invece di aggiungere solo

Problemi correlati