Android Webview Javascript - Verweise auf Skripts funktionieren nicht

7

Entwickeln in Android Studio 1.0.1, API 21. Es folgt die Ordnerstruktur -

Es ist im Wesentlichen eine AngularJS-basierte App, die ich in einen Webcview-Container einpacken und auf Android ausführen möchte.

Meine Android-Seite des Codes ist -

%Vor%

Die Referenzen in html sind alle relativ -

%Vor%

Aber interessanterweise habe ich die meisten Orte durchsucht und bin mir nicht sicher, wo ich falsch liege. Meine Referenzen funktionieren überhaupt nicht! Also kann ich nicht auf meine lib-Dateien, meine Skripte, mein CSS zugreifen. Auch wenn ich eine externe eckige Webseite innerhalb des Webview mit dem gleichen Java-Code laufe, läuft es perfekt!

Jede Hilfe ist willkommen.

Hinweis: Bitte schlagen Sie nicht Cordova / PhoneGap vor. Es ist eine Projektanforderung, nativ zu werden (und ich verstehe ehrlich gesagt nicht, warum, aber ich bin nur ein Entwickler, der nichts dazu sagen kann).

Nebenbei bemerkt: Ich stehe vor dem gleichen Problem mit der iOS-Webansicht. Referenzen funktionieren nicht!

AKTUALISIEREN

Versuchte die folgenden Dinge:

Versucht loadDataWithBaseURL() , funktioniert nicht.

Versuchte alle möglichen Szenarien für Pfade. Nichts hat funktioniert.

Alle Skripte aus dem Ordner entfernt und auf der Stammebene platziert, und die Verknüpfungen so geändert, dass keine Pfade mehr vorhanden sind, einfach Dateinamen. Funktioniert immer noch nicht. Und das ist viel zu seltsam.

    
Kazekage Gaara 22.01.2015, 21:24
quelle

4 Antworten

2

Nachdem ich viel herumgestochert und eine Menge Hilfe von den Leuten bekommen habe, die geantwortet haben, war der Schuldige in meinem Code das base -Tag. Ich entfernte es und entfernte auch das html5mode Ding. Also, um es zusammenzufassen, habe ich Folgendes entfernt:

%Vor%

und

%Vor%

Und alles hat angefangen zu arbeiten.

    
Kazekage Gaara 31.01.2015, 22:16
quelle
14

Ich habe etwas Ähnliches wie folgt gemacht:

%Vor%

Wo 'readAssetFile' ist:

%Vor%

Auch meine Seite ist einfach - nur um ein Bild, die angularjs lib und ein CSS-Stylesheet zu testen:

%Vor%

Auch meine Dateistruktur ist die folgende

Ich hoffe, es hilft:)

    
Spiri 28.01.2015 12:13
quelle
4

Versuchen Sie, einen Vorwärts-Schrägstrich vor "lib" im Pfad Ihrer Quellen zu setzen (da es ein relativer Aufruf ist, wird der Browser es für Sie vervollständigen) Ссылка statt Ссылка ).

UPDATE - Ich glaube, dass AngularJS die ng-src -Richtlinie zum Einbinden externer Quellen verwendet:

> %Vor%

Alternativ können Sie den Pfad auch selbst ausfüllen, wenn Sie den Code nicht unbedingt so dynamisch benötigen (dies ist auch ein schneller Test, um sicherzustellen, dass alles funktioniert):

%Vor%     
Max Worg 22.01.2015 21:33
quelle
4

Ich habe das nicht versucht, aber lege deine index.html Seite in eine Zeichenkette und gebe sie als Daten ein. Die baseUrl ist dann Ссылка

%Vor%

Webview mit lokalen und Interweb (Internet und Intranet) Ressourcen. Sie müssen loadDataWithBaseURL verwenden, und alle Interweb-Ressourcen müssen http: // sein, oder der gesamte Dateizugriff muss Datei: // Ressourcen in irgendetwas aus dem Web sein, das ebenfalls mit http: // angegeben werden muss Links und solche in allem, was aus dem Web kommt, kann nicht //i/image.jpg sein, sie müssen Ссылка . Das heißt, Web oder Dateisystem müssen vollständig qualifiziert sein.

Im Folgenden verwende ich ein lokales Verzeichnis im Dateisystem, indem ich den vollständigen Pfadnamen einer Datei übergebe (es funktioniert, um ein Verzeichnis zu erhalten). Das html wird in eine Zeichenkette eingefügt. Da ich loadDataWithBaseURL verwende, kann ich auch auf das Interweb zugreifen, wenn es mit http: //

vorangestellt ist %Vor%     
danny117 26.01.2015 18:45
quelle

Tags und Links