Android:如何在Android SDK中获取UAProf值?

时间:2011-05-21 16:16:28

标签: android webview uaprof

我目前正在开发一个带有WebView组件的Android应用程序,该组件显示专为移动电话设计的网站,因此必须将x-wap-profile标头发送到网站以调整CSS和图像的大小。 / p>

有人可以帮我找到UAProf设备吗?

我进行了很多搜索,没有成功。

非常感谢任何帮助。

提前致谢。

2 个答案:

答案 0 :(得分:0)

  

有人可以帮我找到UAProf设备吗?

没有“UAProf设备设置”。

欢迎您使用loadUrl()版本,您可以在其中提供自己的标题集,以包含所需的标题。请注意,这是在API级别8(a.k.a.,Android 2.2) - AFAIK中添加的,以前版本的Android没有提供自定义标头的选项。

如果相关网站将使用该网站而不是您想要的标题,也欢迎您通过WebSettings设置您的用户代理字符串。

答案 1 :(得分:0)

UAProf的工作方式如下:当设备向服务器发送HTTP请求时,它会发送一些额外的接受标头。其中一个标头提供了指向该设备的UAProf配置文件的链接,该设备位于服务器上,通常位于设备制造商处,或者可能位于网络运营商处。 UAProf也可以选择发送覆盖作为接受标题的一部分,虽然我从未见过这种情况在野外发生,但不可否认,自从我在UAProf工作以来已经很长时间了。

因此,在您的情况下,您需要做的是发送指向真实UAProf配置文件的x-wap-profile标题,或者如果不存在此类配置文件,则需要编写一个。我没有使用WebView组件 - 我做服务器端java - 但如果你使用的是HttpURLConnection,可以像这样设置x-wap-profile:

    HttpURLConnection urlconn = (HttpURLConnection) url.openConnection();
    urlconn.setRequestProperty("X-Wap-Profile", 
         "http://wap.samsungmobile.com/uaprof/GT-I8190.xml");

您可以在more UAProf profiles

找到Open Mobile Alliance validator site.

查看Android source code似乎无法从Android应用程序中访问与设备关联的UAProf配置文件。但是Android确实有一个单独的API android.content,它为应用程序提供有关设备的信息 - here's an example。不幸的是,一旦你有了屏幕几何图形,你需要将它转换成一个配置文件,这将需要一些工作。

另一种解决方案是,如果你可以get the device name from Android,那么你可以将该设备名称映射到配置文件的配置文件数据库交叉引用。我不认为这样的数据库已经存在,但可能构建一个。一个起点是OMA验证器站点数据库上的list of profiles。不幸的是,这已经过时了,因为我多年没有使用过UAProf,但我用来生成列表的代码可以在我编写的Java UAProf库DELI中找到。它会查询谷歌以查找最近的个人资料,但谷歌确实倾向于更新他们的网页设计,因此它使用的刮刀可能会被破坏。

在你这样做之前,你想检查网站是否会使用UAProf信息 - 也许你正在写网站,在这种情况下它会没问题 - 但对于第三方网站,我怀疑很多人不使用UAProf,因为UAProf配置文件的质量变化很大,如果他们根本使用设备信息,他们可能只检测用户代理字符串,然后在策划的配置文件集合中查找,如WURFL或类似的付费解决方案。