Android: Как хранить url в файле ресурсов string.xml?

Я пытаюсь сохранить полный URL-адрес с параметрами запроса:

www.miosito.net?prova&reg=bis

но это вызывает проблему, потому что &reg похож на объект ®, и андроид говорит мне, что и 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&amp;reg=bis"</string>

Где &amp; - эквивалент 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&reg=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" для десятичных чисел номера и т.д.