Sag*_*kar 11 generics android agent
我正在构建一个Android应用程序来显示来自服务器的内容Feed.该服务器是一个移动网站(如http://m.google.com),可跟踪各种移动客户端的流量.要区分Android客户端,如何为我的应用提供通用字符串?
这就是我问的原因:
我得到的一些Android设备有UA字符串,如:
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
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
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
我需要在UserAgent字符串后附一个字符串来标识我的应用程序.例如:
我需要做这样的事情:
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.
这是正确的方法吗?
Mic*_*eld 12
要更改用户代理,您需要使用HTTP请求发送自定义User-Agent:标头.假设您正在使用Android org.apache.http.client.HttpClient类,您有两个选择:
HttpGet get = new HttpGet(url);
get.setHeader("User-Agent", myUserAgent);
DefaultHttpClient http = new DefaultHttpClient(); http.getParams().setParameter(CoreProtocolPNames.USER_AGENT, myUserAgent);
如果要追加而不是替换用户代理,可以先读取现有代理,更改它,然后使用上述任一方法将其设置回来.
编辑:
由于您说您正在使用WebView视图,因此您需要在那里使用WebSettings自定义点.这基本上是相同的过程.在调用load()方法(loadUrl,loadData等)之前,您需要设置用户代理.只要WebView的实例存在,更改的用户代理就会一直存在,因此您可以在Activity的onCreate()中执行此操作:
view = (WebView)findViewById(R.id.webview); view.getSettings().setUserAgentString(myUserAgent);
同样,如果要追加而不是替换,请使用getUserAgentString()来读取它,然后更新它并再次将其重新设置.