2016-05-04 8 views
0

Ich versuche, eine einfache Geolocation-App zu machen. Die native Geolocation funktioniert gut, da die Koordinaten kommen. Ich habe eine schwere Zeit, eine Google Map zu laden, like in the Simple Markers example here.PhoneGap/Cordova kompilierte Android-App lädt keine externen URIs

Turns out you have to whitelist external domains. Kein Problem, habe ich folgendes meine config.xml (in Wurzel der phonegap app):

<access origin="*" /> 
<access origin="*://*.googleapis.com/*" subdomains="true" /> 
<access origin="*://*.gstatic.com/*" subdomains="true" /> 
<access origin="*://*.google.com/*" subdomains="true" /> 
<access origin="*://*.googleusercontent.com/*" subdomains="true" /> 

Nur für den Fall, ich das gleiche unter <platform name="android"> hinzugefügt. Dann habe ich es entfernt. Immer noch nichts.

Ich machte dann die App ein einfaches Bild anzeigen; das ist, was der HTML-Teil der App wie folgt aussieht:

<body> 
    <span><img src="https://maps.gstatic.com/mapfiles/api-3/images/spotlight-poi_hdpi.png" alt="" /></span> 
    <div id="map"></div> 
</body> 

Wenn ich diese Datei in einem Browser öffnen, es ist a-ok:

enter image description here

Aber wenn ich kompilieren Sie die App und öffnen es auf meinem Tablet, uh oh:

enter image description here

So sieht es aus wie die Zugriffsberechtigungen nicht korrekt eingestellt sind. Das Bild ist kaputt, googleapis.com lädt nie und meine Karte sieht nie das Licht des Tages.

Here is a pastebin meiner Wurzel config.xml Datei.

Bitte helfen Sie mir herauszufinden, warum die Android-App weigert, externe URLs im Zusammenhang mit PhoneGap/Cordova zu laden.

Meine Wette ist auf einige obskure Berechtigungen Sache, über die ich nicht weiß. Hatte ich schon eine Weile mit dem Kopf gegen die Wand geschlagen, wäre mir eine Hilfe wert. Danke im Voraus.

Antwort

1

Vorausgesetzt, dass Sie * als Ursprung auf die weiße Liste gesetzt haben, sollten Sie nicht einmal die von Google benötigen. Haben Sie versucht, die App von Chrome aus zu überprüfen? Gehen Sie zu chrome: // inspizieren in Ihrem Desktop-Browser, und Sie können die App von dort aus überprüfen, wenn das Gerät an Ihren Computer angeschlossen ist.

Die Konsole im Inspector sollte alle Fehler anzeigen, die Ihre Anforderungen verursachen. Ich vermute, dass Sie eine Inhaltssicherheitsrichtlinie haben, die die Anfrage blockiert. Die neueste Version der Whitelist-Dokumentation lautet https://github.com/apache/cordova-plugin-whitelist. Im unteren Bereich der Readme-Datei finden Sie einige Beispiele für eine Inhaltssicherheitsrichtlinie. Ich schlage vor, zu Ihrer index.html folgendes hinzuzufügen:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *">