Я хорошо прочитал об ограничениях отправки электронной почты в формате HTML с Android. Все предложения по отправке электронной почты html, похоже, заключаются в том, чтобы просто передать Html.fromHtml (yourHtmlString) в намерение как Intent.EXTRA_TEXT. Это работает для нескольких основных тегов - жирного шрифта, курсива - но не для чего-либо вроде таблицы html.
Похоже, вы могли бы попытаться расширить некоторые функции Html или реализовать свой собственный обработчик тегов, но мне интересно, нет ли более фундаментального ограничения, которое заставит вас сделать что-то совершенно другое (например, с почтой api или что-то в этом роде).
Причина, по которой я предлагаю это, заключается в том, что, насколько известно самому намерению, Html.fromHtml (blah) - это просто последовательность символов, и если вы вызовете методы интерфейса charsequence для этого объекта, вы не увидите никакого HTML прочее (по крайней мере, я не знал). Кажется, что весь материал html / tag заключен в SpannableStringBuilder, который на самом деле возвращает Html.fromHtml ... и мне интересно, заглядывает ли приложение gmail под обложки, чтобы увидеть, что на самом деле представляет собой последовательность символов, а затем может обрабатывать несколько тегов , что означает, что нет никакой надежды сделать что-либо со стороны вашего приложения, чтобы заставить / обмануть приложение gmail обрабатывать что-либо более сложное, чем полужирный, курсив и т. д.
Я просмотрел исходное сообщение электронной почты, которое фактически отправляет приложение Gmail, и оно автоматически отправляет как текстовый / простой текст без тегов, так и текстовый / HTML-версию с ограниченным количеством тегов. Я даже попытался вставить некоторые экранированные теги html, которые в конечном итоге могут быть преобразованы в фактические теги в текстовой / html части электронного письма, но, увы, они остались экранированными ... и это, конечно, было бы немного взломано.
В любом случае, для тех, кто мог бы изучить это подробнее, я хотел бы сделать дополнительное подтверждение того, что функция Android по умолчанию «отправить html-письмо» сделает вас невероятно близкими к тому, что вам может понадобиться, но, в конце концов, вы пришлось укусить пулю и самостоятельно реализовать множество вещей нижнего уровня (например, Отправка электронной почты в Android с использованием JavaMail API без использования стандартного / встроенного приложения , что означает, что вам придется иметь дело с pw прочее и т. д.).
Примечание (позже):
Я заключил SpannableStringBuilder, возвращенный из Html.fromHtml, в специальный класс, который расширил SpannableStringBuilder и передал его намерению прослушивать вызовы интерфейса Spanned. Оказывается, когда что-то записывается в посылку, которая отправляется в намерение электронной почты, TextUtils.writeToParcel выполняет некоторую специальную проверку, чтобы искоренить жирный / курсив, сначала проверяя, является ли CharSequence экземпляром Spanned, а затем запрашивая промежутки (через spanned.getSpans). Тем не менее, я не вижу очевидной надежды на внесение изменений, чтобы получить что-то столь же простое, как теги table / td, обработанные там.И я даже попытался изменить toString () моего подкласса SpannableStringBuilder, чтобы он возвращал необработанный HTML-код таблицы, чтобы посмотреть, что произойдет, но он ускользнул где-то еще внизу в процессе записи посылки.
И многое другое (позже):
TextUtils.writeToParcel (CharSequence cs, Parcel p, ...), если cs является экземпляром Spanned, будет записывать эти промежутки, только если они реализуют ParcelableSpan "interface ... который является" особым типом Parcelable для объектов, которые будут служить текстовыми промежутками "и" может использоваться только кодом во фреймворке; он не предназначен для приложений, которые реализуют свои собственные участки Parcelable ". Так что, даже если вы захотите подключиться к этому и написать свой собственный для обработки тегов таблиц или чего-то еще, это кажется обескураживающим. Человек, которого я хотел бы, чтобы hackbod взвесил здесь что-то очевидное, что я пропустил.