Easier way to put an extremely long HTML string into a String object in Java (Android)
An Android Application that I created for a client some months ago has the ability to email a link to a PDF with a ton of text in it. The client now wants that text to go directly in the email, in HTML form (w开发者_运维技巧ith links, bullets, etc).
Using Android's Mail Intent, I am trying to send this long string over the EXTRA_MESSAGE field, but since I have to wrap the text in double-quotes, I have to '\' almost every double-quote I want in the String, which is rather unpleasant for thousands of lines, not to mention (if I remember correctly), using the += operator for multiple lines didn't seem to work.
Is there any way around this, and what's the easiest way to put long HTML code into a String object for sending?
Thanks!
Hmm, I think I understand what you're looking for. I think what you're going to want to use is a method in the TextUtils
class called htmlEncode()
. This will take your input and change all the HTML elements to their equivalents (e.g. <
becomes <
, "
becomes "
). However, this method TAKES a String as a parameter; for example:
String escapedString = TextUtils.htmlEncode(unescapedString);
So to get this string, I would think the easiest way would be to first store this HTML string in an XML resource (strings.xml), then access it by using getString()
:
String unescapedString = getString(R.string.html_string);
String escapedString = TextUtils.htmlEncode(unescapedString);
This only works if the HTML string is always the same, though.
I'm not sure exactly what you are trying to do, or how dynamic is it. But you might consider the String.format method. like so String.format("<htmltag>%s</htmltag>","stuff inside tags");
along with the StringBuilder object in order to concatenate multiple strings and build the final string.
Any time that you are concatenating strings using loops or conditionals you'll want to use a StringBuilder or another similar construct. The += operator leads to allocating a lot of String objects that get thrown away almost immediately since they're immutable.
精彩评论