Android: Как хранить url в файле ресурсов string.xml?
Я пытаюсь сохранить полный URL-адрес с параметрами запроса:
www.miosito.net?prova®=bis
но это вызывает проблему, потому что ®
похож на объект ®
, и андроид говорит мне, что и html-объект плохо написан.
Мне нужно это, потому что каждый языковой стандарт использует совершенно другой набор параметров запроса url.
Я попытался с [[CDATA[.. ]]
, но этот синтаксис не понравился синтаксическому анализатору xml.
Ответы
Ответ 1
Проблема не в &req
, а в &
. Для XML/HTML вам нужно будет использовать объект &
(или &
), но для URL-адресов вы должны скорее URL-кодировать (см. Docs), и в этом случае указанный &
следует заменить на %26
. Итак, ваша финальная строка должна выглядеть так:
www.miosito.net?prova%26reg=bis
Ответ 2
Сохраните его следующим образом:
<string name="my_url">"www.miosito.net?prova&reg=bis"</string>
Где &
- эквивалент XML символа амперсанда &
.
Ответ 3
Процент кодирования может сделать трюк: http://en.wikipedia.org/wiki/Percent-encoding
У вас в основном есть что-то вроде этого: www.miosito.net?prova%26reg=bis
Ответ 4
Вы можете заключить свой URL в двойные кавычки, что-то вроде:
<string name="my_url">"www.miosito.net?prova®=bis"</string>
Это рекомендуемый способ вложения строковых ресурсов в Android.
Обновление 1: ознакомьтесь со следующей ссылкой для получения дополнительной информации:
http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling
Обновление 2:
@WebnetMobile.com: Правильно, действительно:)
'& Амп;' обрабатывается особым символом с помощью xml и включение в кавычки не работает. Я пробовал
www.miosito.net?prova%26reg=bis
и это тоже не сработало. Я даже попытался включить его в кавычки, но все равно не работал. Я что-то упускаю?
Между тем, работает следующее:
<string name="my_url">www.miosito.net%1$sprova%2$sreg=bis</string>
а затем в коде:
Resources resources=getResources();
String url=String.format(resources.getString(R.string.my_url),"?","&") ;
"% 1 $s" и "% 2 $s" являются спецификаторами формата, как и в printf в C. "% 1 $s" для строк, "% 2 $d" для десятичных чисел номера и т.д.