Android Generic-User-Agent (UA)
Baue ich eine Android-app zum anzeigen von content-Feeds von einem server. Der server ist eine mobile website (wie http://m.google.com), die Spuren der Verkehr aus verschiedenen mobilen clients. Zu unterscheiden ein Android-client, wie erstelle ich eine generische Zeichenfolge für meine app?
Hier ist der Grund, warum ich Frage:
Einige Android-Geräte, die ich bekam, haben UA Zeichenfolgen wie:
Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; ADR6400L 4G Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 2.1; en-us; Eclair_SPR Build/30201) AppleWebKit/520.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/520.17
Muss ich anfügen eine Zeichenfolge an der UserAgent-string zu identifizieren, die meine app. Für zB:
Muss ich tun so etwas wie dieses:
Mozilla/5.0 (Linux; U; Android 2.1; en-us; Eclair_SPR Build/30201) AppleWebKit/520.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/520.17 Android_MyFirstApp
.
Ist das der richtige Weg, es zu tun?
InformationsquelleAutor Sagar Hatekar | 2011-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern der user-agent Sie benötigen, senden Sie eine benutzerdefinierte User-Agent: "- header mit HTTP-Anfrage. Angenommen, Sie sind mit dem Android-org.apache.http.client.HttpClient Klasse, haben Sie zwei Möglichkeiten:
Wenn Sie Anhängen möchten, statt ersetzen der user-agent, können Sie Lesen die vorhandene zuerst ändern Sie es und legen Sie es wieder mit den oben genannten Methoden.
EDIT:
Da Sie sagte, Sie sind mit der WebView-Ansicht, die Sie verwenden müssen, die WebSettings Anpassung zu deuten. Es ist im Grunde der gleiche Prozess. Bevor Sie anrufen je nachdem load () - Methode (loadUrl, loadData, etc) Sie setzen der user-agent. Die geänderten user-agent wird bestehen, solange die Instanz des WebView ist um, so dass Sie tun würde, diese in der onCreate() der Activity:
Wieder, wenn Sie Anhängen möchten, anstatt zu ersetzen, verwenden Sie getUserAgentString() zu Lesen, dann aktualisieren Sie es, und legen Sie es wieder zurück.
InformationsquelleAutor Michael Edenfield
Da Steuern Sie Ihre Android-client, warum gehst du nicht erstellen Sie eine generic-header string, und legen Sie Sie in der Kopfzeile jedes mal, wenn Ihre app macht einen server nennen? So können Sie sicherstellen, dass der string eindeutig ist, und können auch hinzufügen, andere nützliche Informationen werden zum server gesendet. Sie sollten in der Lage sein zu verwenden
webView.loadUrl()
einstellen zusätzliche Kopfzeilen.InformationsquelleAutor omermuhammed
Können Sie ganz das und an developer.android.com schlage vor, es als gut, wenn Sie reden über die WebView, vor allem, wenn Sie erstellen möchten eine web-app für Ihre web-Ansicht. Referenz: http://developer.android.com/guide/webapps/webview.html
Id schlagen nicht nur zu halten, Verweis auf die Anwendung in Ihrem User-Agent, sondern überwacht auch die version als gut.
Na ja, ich war auf der Suche um meine UA zu und die Diskussionen hier und das hat mich ermutigt, dies auch zu tun.
Hier ist meine Umsetzung:
Auf Ihrem Android-APP:
Wenn Sie möchten, um auto increment build-Nummer aka. versionCode Sie können einen Blick auf diesen anderen - Stack Overflow post als auch der C# - Lösung.
Danach ändern Sie einfach die User-Agent.
Auf Ihrer Web-Anwendung In PHP
Oder In JavaScript
Oder kann man direkt erkennen, es aus der .htaccess Datei:
InformationsquelleAutor jkanini
Es hängt davon ab, welchen Rahmen Sie verwenden, um Ihren Anfragen. Wenn Sie mit der
org.apache
Klassen, die Sie anrufen könnensetHeader('User-Agent', "Generic user agent here")
auf dieHttpMessage
Sie verwenden, um Ihre Anfrage.Sie haben die Antwort gibt... warum nicht setUserAgentString() funktioniert für Sie? Holen Sie sich die aktuellen Wert mit getUserAgentString() und dann append Ihren Wert. Haben Sie dies ausprobiert und festgestellt, dass es nicht funktioniert?
Danke für die hilfreiche info. ja, ich habe versucht, die gleiche Vorgehensweise, die Sie vorgeschlagen, aber ich Frage mich, ob das der richtige Weg, das zu tun. Da die myappname string wird ein alien-string an den browser und es sollte nicht zu undefinierten Verhalten. Dennoch, es funktioniert! Danke!
könntest du deinen post oben im Kommentar als eine Antwort, so kann ich upvote. Danke!
InformationsquelleAutor Jason LeBrun
Wenn Sie den web-Ansicht zum Zugriff auf den user-agent, stellen Sie sicher, dass die
new WebView(this).getSettings().getUserAgentString();
auf dem UI-thread.
Wenn Sie Zugriff auf den user-agent in den hintergrund-thread. verwenden
System.getProperty("http.agent")
Zu prüfen, ob eine user-agent gültig ist oder nicht, verwenden Sie diese https://deviceatlas.com/device-data/user-agent-tester
InformationsquelleAutor Jesudas Lobo