Ich habe eine Android Phonegap / Cordova App, die mit einer ASP.NET MVC-Webanwendung interagiert. Ich versuche, serverseitig zu erkennen, ob die Webseite von einem Browser oder von meiner Phonegap / Cordova-App geladen wird.
Es gibt ein paar Methoden, die ich in Betracht gezogen habe:
Mache ich etwas falsch bei der Benutzer-Agent-String-Änderung? Oder gibt es eine andere Methode, um dies zu erreichen?
Sieht so aus, als ob es eine Pull-Anfrage für etwas Ähnliches gibt (fügen Sie "cordova / phonegap" zu UAS hinzu)
Ссылка
Hier ist das Herzstück davon.
Also würde ich DroidGap erweitern und außer Kraft setzen public void init (CordovaWebView webView, CordovaWebViewClient webViewClient, CordovaChromeClient webChromeClient) :
%Vor%Dann können Sie den erweiterten DroidGap verwenden und steuern, wie Sie den User Agent String definieren.
Nur bestätigt das funktioniert, hier ist der vollständige Code mit der aktuellen Cordova-Implementierung:
%Vor%Also, für Cordova 5.1.1 und seine Plattformversion von Android 4.0.2 (Was ich bei der Verwendung von Cordova 5.1.1 aus der Box herausgeholt habe), sind diese Antworten nicht mehr gültig.
Nach einigen schwierigen Stökern ist die Lösung für die oben genannten Versionen jetzt die folgende:
Überschreiben Sie in der üblichen MainActivity.java
, die standardmäßig von cordova erstellt wird und die CordovaActivity
erweitert, die Methode makeWebViewEngine
:
In Zukunft, wenn sie die Version der Android-Plattform aktualisieren, sollte dies einfacher durch die config.xml erfolgen, aber es ist keine Option ATM, da ich den Bugfix-Thread CB-8960 kommentiert habe
@ Peters Antwort kommt dorthin, aber Sie müssen nicht die gesamte init-Methode überschreiben. Hier ist ein einfacher, wartungsfreundlicher Weg:
%Vor%Wenn Sie eine aktuelle Version von cordova verwenden, überprüfen Sie diese Konfigurationsanleitung auf ihrer Website: Ссылка
Suche nach UserAgent. Es gibt zwei Einstellungen, mit denen Sie entweder etwas an den User-Agent (AppendUserAgent-Einstellung) anhängen oder die User-Agent-Einstellung (OverrideUserAgent-Einstellung) überschreiben können.
Zum Beispiel habe ich in meinem Android-Projekt in der Datei res / xml / config.xml die Einstellung
hinzugefügt %Vor%Wenn ich dies anwende, ändert sich mein User-Agent in etwas wie:
%Vor%Tags und Links android cordova http-headers user-agent