1

Я просмотрел веб-страницы, но пока не нашел решение, которое соответствует моей конкретной потребности. Я ищу способ обмена информации с намерением акций, что обеспечивает интерактивную ссылку, что-то вроде:Акция для Android с помощью интерактивной ссылки

Заканчивать эту новость статья

через Jimmy's News App

Я успешно установить долю намерение в мой андроид приложение, которое выглядит следующим образом:

Intent shareIntent = new Intent(); 
shareIntent.setAction(Intent.ACTION_SEND); 
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject Text"); 
shareIntent.putExtra(Intent.EXTRA_TEXT, "Check out this news article" + "\n\n" + getResources().getText(R.string.shared_via)); 
shareIntent.setType("text/plain"); 
startActivity(Intent.createChooser(shareIntent, "Share this article with...")); 

Мой ресурс строки выглядит следующим образом:

<string name="shared_via">via <a ref="http://google.com">Jimmy's News App</a></string> 

Функции обмена, как это, однако следует при совместном использовании в электронной почте, Twitter и т.д. ссылка игнорируется и чириканье показывает только простой текст, как это:

enter image description here

Я пытался играть вокруг с MIME типа, но все равно нет сигары. Есть ли все-таки, чтобы «Приложение новостей Jimmy's» было доступно при совместном использовании? Я более чем благодарен за любую помощь и советы.

Заранее благодарен!

ответ

4

Во-первых, я бы не ожидал, что ваш проект будет даже построен, поскольку строковые ресурсы не поддерживают произвольные HTML-теги. Единственными зарегистрированными являются <b>, <i> и <u>.

Во-вторых, даже если он поддерживает произвольные HTML-теги, вы преобразовываете его обратно из Spanned (getText()) в обычную строку, которая удалит это форматирование.

Чтобы преодолеть обе проблемы, переместите эту строку в Java (в конце концов, это не так, как будто у вас есть i18n, с жестко закрепленным английским в другом месте фрагмента кода) или оберните содержимое строки в CDATA (в то же время, сломанный HTML, чтобы использовать href для атрибута <a>):

<string name="shared_via"><![CDATA[via <a href="http://google.com">Jimmy's News App</a>]]></string> 

на данный момент, если вы посмотрите на каскадную строке, она должна выглядеть как квази-HTML источник:

Check out this news article 

via <a href="http://google.com">Jimmy's News App</a> 

Далее, пока вы отправляете по HTML, вы объявляете его как обычный текст. Поэтому многие приложения будут рассматривать его как обычный текст и могут делать что-либо от игнорирования тега до отображения необработанного HTML. Вы можете попробовать text/html как тип MIME и посмотреть, есть ли у вас лучшие результаты.

И, наконец, нет необходимости, чтобы какое-либо приложение действительно соблюдало ваши ссылки. ACTION_SEND - это запрос, а не команда. Нет правил того, как сторонние приложения используют HTML-код, который вы отправляете, и поэтому вы будете получать разные результаты из разных приложений.

Смежные вопросы