10
votes

Agent utilisateur générique Android (UA)

Je construis une application Android pour afficher le contenu du contenu à partir d'un serveur. Le serveur est un site Web mobile (comme http://m.google.com ) qui suit le trafic de divers mobiles mobiles clients. Pour différencier un client Android, comment puis-je fournir une chaîne générique pour mon application?

Voici pourquoi je demande que:

Certains des appareils Android que j'ai obtenus ont des cordes UA comme:

Mozilla / 5.0 (Linux; U; Android 2.2.1; EN-US; ADR6400L 4G Build / FRG83D) Applewebkit / 533.1 (KHTML, comme Gecko) Version / 4.0 Safari mobile / 533.1

Mozilla / 5.0 (Linux; U; Android 2.1; en-US; Eclair_spr Build / 30201) Applewebkit / 520.17 (KHTML, comme Gecko) Version / 4.0 Safari mobile / 520.17

J'ai besoin d'apporter une chaîne à la chaîne userAgent pour identifier mon application. Par exemple:

J'ai besoin de faire quelque chose comme ça: Mozilla / 5.0 (Linux; U; Android 2.1; EN-US; Eclair_spr Build / 30201) Applewebkit / 520.17 (KHTML, comme Gecko) Version / 4.0 Safari mobile / 520.17 Android_MyFirstapp .

est-ce la bonne façon de le faire?


0 commentaires

5 Réponses :


0
votes

Cela dépend de quel cadre vous utilisez pour faire vos demandes. Si vous utilisez les classes org.apache , vous pouvez appeler Sethader ("utilisateur utilisateur", "agent utilisateur générique ici") sur le httpmessage < / Code> Vous utilisez pour faire votre demande.


4 commentaires

Merci pour l'info. En fait, je ne fais pas de demande HTTP. J'ai une vision webview dans laquelle je rends le contenu HTML donc je viens de faire webview.loadrurl () donc, tout ce que je peux faire est webview.getsettings (). Setureragentstring () Toute idée?


Vous avez la réponse là-bas ... pourquoi SetUserAgentsString ne fonctionne-t-il pas pour vous? Obtenez la valeur actuelle avec GetUserAgentsRing (), puis appendez votre valeur. Avez-vous essayé cela et avez trouvé que cela ne fonctionne pas?


Merci pour l'info utile. Oui, j'ai essayé la même approche que vous avez suggérée, mais je me demandais si c'est la bonne façon de faire. Depuis, la chaîne Myappname sera une chaîne extraterrestre au navigateur et elle ne devrait pas entraîner un comportement indéfini. Néanmoins, ça marche bien! Merci!


Vous pouvez poster votre commentaire ci-dessus comme une réponse afin que je puisse la uppoter. Merci!



11
votes

Pour modifier l'agent utilisateur que vous devez envoyer un User-Agent personnalisé: en-tête avec votre requête HTTP. En supposant que vous utilisez la classe Android org.apache.http.client.HttpClient, vous avez deux options:

  1. Régler la tête de l'agent utilisateur sur chaque demande. Vous faites cela en appelant setHeader () sur votre objet HttpRequest (HttpPost, HttpGet, peu importe) après l'avoir créé: li> Ol>
    view = (WebView)findViewById(R.id.webview);
    view.getSettings().setUserAgentString(myUserAgent);
    


0 commentaires

1
votes

Depuis que vous contrôlez votre client Android, pourquoi ne créez-vous pas une chaîne d'en-tête générique et définissez-la dans l'en-tête chaque fois que votre application fait un appel de serveur? De cette façon, vous pouvez vous assurer que la chaîne est unique et peut également ajouter toute autre information utile à envoyer au serveur. Vous devriez pouvoir utiliser webview.loadrurl () pour définir des en-têtes supplémentaires.


1 commentaires

Merci Omer Mohammed pour vos informations!



1
votes

Vous pouvez totalement faire cela et au développeur.Android.com le suggère également, quand ils parlent de WebView, surtout si vous souhaitez créer une application Web pour votre vue Web. Référence ici: http://developer.android.com/guide/webapps/webview.html

ID suggère non seulement de conserver la référence à l'application de votre agent utilisateur, mais également de garder une trace de la version également. P>

Quoi qu'il en soit, je cherchais à changer mes UA et Les discussions ici et nous ont encouragé à le faire aussi. P>

Voici ma mise en œuvre: p>

sur votre application Android: strong> p>

RewriteCond %{HTTP_USER_AGENT} ^.*MyFancyAPPName.*$
RewriteRule ^(.*)$ http://www.MyWebSite/MyFancyAPPName [R=301]


0 commentaires

0
votes

Lorsque vous utilisez la vue Web pour accéder à l'utilisateur-agent, assurez-vous d'exécuter le

nouveau webview (this) .GetSettings (). GetUserAgentsRing ();

sur le fil de l'interface utilisateur.

Si vous souhaitez accéder à l'agent utilisateur dans le fil d'arrière-plan. utiliser

system.geproperty ("http.agent")

Pour vérifier si un agent utilisateur est valide ou n'utilise pas ce HTTPS: // deviceatlas.com/device-data/user-agent-tester


0 commentaires