Android Générique de l'Agent Utilisateur (UA)
Je fais construire une application Android pour afficher le flux de contenu à partir d'un serveur. Le serveur est un site web mobile (comme http://m.google.com) qui assure le suivi de la circulation de divers clients mobiles. Pour distinguer un client Android, comment dois-je fournir une chaîne générique pour mon application?
Voici pourquoi je demande que:
Certains appareils Android (j'ai UA chaînes de caractères comme:
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
J'ai besoin d'ajouter une chaîne à la chaîne UserAgent pour identifier mon application. Pour exemple:
J'ai besoin de faire quelque chose comme ceci:
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
.
Est-ce la bonne façon de le faire?
OriginalL'auteur Sagar Hatekar | 2011-04-14
Vous devez vous connecter pour publier un commentaire.
De changer l'user agent, vous devez envoyer un custom User-Agent: en-tête avec votre requête HTTP. En supposant que vous êtes en utilisant l'Android org.apache.http.client.HttpClient classe, vous avez deux options:
Si vous voulez ajouter au lieu de remplacer l'agent de l'utilisateur, vous pouvez lire l'existant tout d'abord, le modifier, et de le régler à l'aide de l'une des méthodes ci-dessus.
EDIT:
Puisque vous avez dit que vous êtes à l'aide de la WebView point de vue, vous aurez besoin d'utiliser la WebSettings personnalisation point là. C'est essentiellement le même processus. Avant d'appeler selon la méthode load () (loadUrl, loadData, etc), vous définissez l'agent de l'utilisateur. Le changement de user-agent persistera tant que l'instance de la WebView est autour, donc, si vous voulez le faire dans le onCreate() de votre Activité:
Encore une fois, si vous voulez ajouter au lieu de remplacer, à l'utilisation getUserAgentString() pour le lire, puis la mise à jour et de le régler à nouveau.
OriginalL'auteur Michael Edenfield
Depuis que vous avez le contrôle de votre client Android, pourquoi ne pas vous créer un générique de la chaîne d'en-tête, et de les mettre en 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 pour être envoyé au serveur. Vous devriez être en mesure d'utiliser
webView.loadUrl()
pour définir des en-têtes supplémentaires.OriginalL'auteur omermuhammed
Vous pouvez tout à faire et à developer.android.com il suggère bien, quand ils parlent de WebView, surtout si vous souhaitez créer une application web pour votre vue web. Référence: http://developer.android.com/guide/webapps/webview.html
Id suggèrent non seulement de garder la référence à la demande à votre Agent Utilisateur, mais aussi de garder une trace de la version.
De toute façon, je cherchais à changer mon UC trop et les discussions ici et m'a encouragé à le faire.
Voici mon oeuvre:
Sur votre APPLICATION Android:
Si vous voulez auto incrémenter le numéro de version aka. versionCode vous pouvez prendre un coup d'oeil à cet autre Un Débordement De Pile post ainsi, la solution C#.
Par la suite, il suffit de changer l'User Agent.
Sur votre Application Web: PHP
Ou En JavaScript
Ou vous pouvez détecter directement à partir de la .htaccess fichier:
OriginalL'auteur jkanini
Cela dépend de ce framework que vous utilisez pour faire vos demandes. Si vous êtes à l'aide de la
org.apache
classes, vous pouvez appelersetHeader('User-Agent', "Generic user agent here")
sur leHttpMessage
que vous utilisez pour faire votre demande.Vous avez la réponse... pourquoi n'est-ce pas setUserAgentString() de travail pour vous? Obtenir la valeur actuelle avec getUserAgentString() et ensuite ajouter de la valeur. Avez-vous essayé et constaté que ça ne fonctionne pas?
Merci pour l'info utile. oui, j'ai essayé de la même manière que vous l'avez suggéré, mais je me demandais si c'est la bonne façon de le faire. Depuis, le myappname chaîne sera un étranger chaîne dans le navigateur et il ne devrait pas se traduire par un comportement indéterminé. Néanmoins, il fonctionne très bien! Merci!
vous pouvez poster votre commentaire ci-dessus comme une réponse afin que je puisse upvote. Merci!
OriginalL'auteur Jason LeBrun
Lorsque vous utilisez le web pour accéder à l'agent utilisateur, assurez-vous d'exécuter la
new WebView(this).getSettings().getUserAgentString();
sur le thread d'INTERFACE utilisateur.
Si vous souhaitez accéder à l'agent de l'utilisateur dans le thread d'arrière-plan. utilisation
System.getProperty("http.agent")
Pour vérifier si un agent utilisateur est valide ou ne pas utiliser ce https://deviceatlas.com/device-data/user-agent-tester
OriginalL'auteur Jesudas Lobo