В настоящее время я разрабатываю приложение для Android с компонентом WebView, который отображает веб-сайт, предназначенный для мобильных телефонов, и поэтому заголовок x-wap-профиля должен быть отправлен на сайт, чтобы изменить размер CSS и изображений.
Может ли кто-нибудь помочь мне найти настройку устройства UAProf?
Я провел много поисков, не добившись успеха.
Любая помощь будет принята с благодарностью.
Спасибо заранее.
Может ли кто-нибудь помочь мне найти настройку устройства UAProf?
Нет настроек устройства UAProf.
Вы можете использовать версию loadUrl()
, где вы предоставляете свой собственный набор заголовков для включения нужного заголовка. Обратите внимание, что это было добавлено в API 8-го уровня (a.k.a., Android 2.2) - AFAIK, в предыдущих версиях Android не было параметров для предоставления пользовательских заголовков.
Вы также можете установить строку своего пользователя через WebSettings
, если этот веб-сайт будет использовать это вместо желаемого заголовка.
UAProf должен работать следующим образом: когда устройство отправляет HTTP-запрос серверу, он отправляет некоторые аддитивные заголовки. Один из этих заголовков предоставляет ссылку на профиль UAProf для этого устройства, которое расположено на сервере, как правило, у производителя устройства или, возможно, у оператора сети. UAProf также может, необязательно, отправлять переопределения как часть заголовков accept, хотя я никогда не видел, чтобы это происходило в дикой природе, но, по общему признанию, я долгое время работал над UAProf.
Итак, в вашем случае вам нужно либо отправить заголовок x-wap-профиля, указывающий на реальный профиль UAProf, либо если такой профиль не существует, вам нужно написать его. Я не использовал компонент WebView - я использую серверную java-версию, но можно установить x-wap-profile следующим образом, если вы используете HttpURLConnection:
HttpURLConnection urlconn = (HttpURLConnection) url.openConnection();
urlconn.setRequestProperty("X-Wap-Profile",
"http://wap.samsungmobile.com/uaprof/GT-I8190.xml");
Вы можете найти больше профилей UAProf в Open Mobile Alliance сайт валидатора.
Обзор Исходный код Android кажется, что нет способа получить доступ к профилю UAProf, связанному с устройством, из приложения Android. Однако у Android есть отдельный API, android.content, который предоставляет приложениям информацию об устройстве - вот пример. К сожалению, как только вы получите геометрию экрана, вам нужно будет преобразовать это в профиль, который займет немного работы.
Другое решение - если вы можете получить имя устройства с Android, то вы можете перекрестно ссылаться на базу данных профилей, которая сопоставляет имена устройств в профилях. Я не думаю, что такая база данных уже существует, но ее можно было бы построить. Одной отправной точкой является список профилей в базе данных сайта валидатора OMA. К сожалению, это устарело, поскольку я не работал над UAProf в течение нескольких лет, но код, который я использовал для создания списка, доступен в DELI, которую я написал в библиотеке Java UAProf. Он запрашивает Google, чтобы найти последние профили, но Google, как правило, обновляет дизайн своей веб-страницы, поэтому скребок, который он использует, может быть нарушен.
Прежде чем вы это сделаете, вы хотите проверить, будет ли сайт использовать информацию UAProf - возможно, вы пишете сайт, и в этом случае это будет хорошо, но для сторонних сайтов я подозреваю, что многие не используют UAProf, потому что качество профилей UAProf очень изменчиво, если они вообще используют информацию об устройстве, они могут просто определить строку пользовательского агента, а затем просмотреть ее в кураторской коллекции профилей, например WURFL или аналогичное платное решение.