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? P>
Voici pourquoi je demande que: p>
Certains des appareils Android que j'ai obtenus ont des cordes UA comme: p>
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
code> p>
J'ai besoin d'apporter une chaîne à la chaîne userAgent pour identifier mon application. Par exemple: p>
J'ai besoin de faire quelque chose comme ça:
est-ce la bonne façon de le faire? p>
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 P>
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 Code>. p>
5 Réponses :
Cela dépend de quel cadre vous utilisez pour faire vos demandes. Si vous utilisez les classes org.apache code>, vous pouvez appeler
Sethader ("utilisateur utilisateur", "agent utilisateur générique ici") code> sur le
httpmessage < / Code> Vous utilisez pour faire votre demande. P>
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 () code> donc, tout ce que je peux faire est
webview.getsettings (). Setureragentstring () Code> 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!
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:
view = (WebView)findViewById(R.id.webview); view.getSettings().setUserAgentString(myUserAgent);
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 () code> pour définir des en-têtes supplémentaires. P>
Merci Omer Mohammed pour vos informations!
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]
Lorsque vous utilisez la vue Web pour accéder à l'utilisateur-agent, assurez-vous d'exécuter le P>
sur le fil de l'interface utilisateur. P>
Si vous souhaitez accéder à l'agent utilisateur dans le fil d'arrière-plan. utiliser p>
Pour vérifier si un agent utilisateur est valide ou n'utilise pas ce HTTPS: // deviceatlas.com/device-data/user-agent-tester p> nouveau webview (this) .GetSettings (). GetUserAgentsRing (); code> p>
system.geproperty ("http.agent") code> p>