我目前正在开发一个带有 WebView 组件的 Android 应用程序,该组件显示一个专为手机设计的网站,因此必须将 x-wap-profile 标头发送到该站点以调整 CSS 和图像的大小。
谁能帮我找到 UAProf 设备设置?
我进行了很多搜索,但没有成功。
任何帮助将不胜感激。
提前致谢。
谁能帮我找到 UAProf 设备设置?
没有“UAProf 设备设置”。
欢迎您使用loadUrl()
您提供自己的标题集的版本来包含您想要的标题。请注意,这是在 API 级别 8(又名 Android 2.2)中添加的——AFAIK,Android 的早期版本没有提供自定义标头的选项。
WebSettings
如果有问题的网站将使用它而不是您想要的标题,也欢迎您通过 设置您的用户代理字符串。
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");
您可以在开放移动联盟验证器站点上找到更多 UAProf 配置文件。
查看Android 源代码,似乎无法从 Android 应用程序中访问与设备关联的 UAProf 配置文件。然而,Android 确实有一个单独的 API,android.content,它为应用程序提供有关设备的信息 -这是一个示例。不幸的是,一旦您获得了屏幕几何图形,您需要将其转换为配置文件,这需要一些工作。
另一种解决方案是,如果您可以从 Android 获取设备名称,那么您可以将其与将设备名称映射到配置文件的配置文件数据库进行交叉引用。我不认为这样的数据库已经存在,但也许可以构建一个。一个起点是OMA 验证器站点数据库上的配置文件列表。不幸的是,这已经过时了,因为我已经很多年没有在 UAProf 上工作了,但是我用来生成列表的代码可以在我编写的 Java UAProf 库DELI中找到。它查询谷歌以查找最近的个人资料,但谷歌确实倾向于更新他们的网页设计,因此它使用的刮板可能会被破坏。
在你这样做之前,你想检查网站是否会使用 UAProf 信息——也许你正在编写网站,在这种情况下它会很好——但是对于第三方网站,我怀疑很多人不使用 UAProf,因为UProf 配置文件非常多变,如果他们完全使用设备信息,他们可能只是检测用户代理字符串,然后在WURFL或类似的付费解决方案等精选配置文件集合中查找它。