Intereting Posts

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

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

www.miosito.net?prova&reg=bis 

Но это вызывает проблему, потому что &reg похож на ® Сущность и андроид говорят мне, что и html-объект плохо написан.

Мне нужно это, потому что каждый язык использует полностью другой набор параметров запроса url.

Я попытался использовать [[CDATA[.. ]] но этот синтаксис не понравился синтаксическому анализатору xml.

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

Проблема не в &req а в & самом себе. Для XML / HTML вы должны использовать & Entity (или & ), но для URL-адресов вы должны использовать строки с URL-кодированием ( см. Docs ), и в этом случае указанная & должна быть заменена на %26 . Итак, ваша финальная строка должна выглядеть так:

http://www.miosito.net?prova%26reg=bis

Храните его следующим образом:

 <string name="my_url">"www.miosito.net?prova&amp;reg=bis"</string> 

Где &amp; Является эквивалентом XML символа амперсанда & .

Процент кодирования может сделать трюк: http://en.wikipedia.org/wiki/Percent-encoding. У вас в основном есть что-то вроде этого: http://www.miosito.net?prova%26reg=bis

Вы можете заключить свой 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» для десятичных чисел, и поэтому на.