Android: как получить значение UAProf в Android SDK? - PullRequest
1 голос
/ 21 мая 2011

В настоящее время я занимаюсь разработкой приложения для Android с компонентом WebView, который отображает веб-сайт, предназначенный для мобильных телефонов, поэтому заголовок x-wap-profile должен быть отправлен на сайт для изменения размера CSS и изображений.

Может ли кто-нибудь помочь мне найти настройки устройства UAProf?

Я провел большой поиск, но безуспешно.

Любая помощь будет принята с благодарностью.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2013

UAProf предназначен для работы следующим образом: когда устройство отправляет HTTP-запрос на сервер, оно отправляет некоторые дополнительные заголовки принятия. Один из этих заголовков предоставляет ссылку на профиль UAProf для этого устройства, которое находится на сервере, обычно у производителя устройства или, возможно, у оператора сети. UAProf также может, при желании, отправлять переопределения как часть заголовков принятия, хотя я никогда не видел, чтобы это происходило в дикой природе, но по общему признанию, я давно работал с UAProf.

Итак, в вашем случае вам нужно либо отправить заголовок профиля x-wap, указывающий на реальный профиль UAProf, либо, если такого профиля не существует, вам нужно написать его. Я не использовал компонент WebView - я делаю Java на стороне сервера - но возможно установить x-wap-профиль так, если вы используете HttpURLConnection:

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

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Просмотр исходного кода Android кажется, что нет доступа к профилю UAProf, связанному с устройством, из приложения Android. Однако у Android есть отдельный API, android.content , который предоставляет приложениям информацию об устройстве - , вот пример . К сожалению, как только вы получите геометрию экрана, вам нужно будет преобразовать ее в профиль, что потребует немного работы.

Другое решение состоит в том, что если вы могли бы получить имя устройства из Android , то вы могли бы сопоставить его с базой данных профилей, которая сопоставляет имена устройств с профилями. Я не думаю, что такая база данных уже существует, но ее можно создать. Одной из отправных точек является список профилей в базе данных сайта валидатора OMA. К сожалению, это устарело, так как я несколько лет не работал с UAProf, но код, который я использовал для создания списка, доступен в DELI , библиотеке Java UAProf, которую я написал. Он запрашивает у Google информацию о последних профилях, но Google, как правило, обновляет дизайн своих веб-страниц, поэтому используемый им скребок может быть сломан.

Прежде чем сделать это, вы хотите проверить, будет ли веб-сайт использовать информацию UAProf - возможно, вы пишете сайт, и в этом случае это будет хорошо - но я подозреваю, что для сторонних сайтов многие не используют UAProf, потому что качество профилей UAProf очень разнится, если они вообще используют информацию об устройстве, они могут просто обнаружить строку пользовательского агента, а затем найти ее в кураторской коллекции профилей, например WURFL или аналогичном платном решении.

0 голосов
/ 21 мая 2011

Может ли кто-нибудь помочь мне найти настройки устройства UAProf?

Нет "Настройки устройства UAProf".

Вы можете использовать версию loadUrl() где вы предоставляете свой собственный набор заголовков для включения желаемого заголовка.Обратите внимание, что это было добавлено в API Level 8 (он же Android 2.2) - AFAIK, в предыдущих версиях Android не было опций для предоставления пользовательских заголовков.

Вы также можете установить строку агента пользователя через WebSettings, если рассматриваемый веб-сайт будет использовать его вместо желаемого заголовка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...