2013-04-04 28 views
8

Tôi muốn gửi thư html từ ứng dụng của mình. Tôi biết rằng không phải tất cả ứng dụng thư đều cho phép thẻ html. Nhưng tôi đã tìm thấy Intent.EXTRA_HTML_TEXT hằng số trong API (http://developer.android.com/reference/android/content/Intent.html#EXTRA_HTML_TEXT).gửi thư html nếu ứng dụng cho phép

Mã của tôi trông như thế này, nhưng nó luôn luôn hiển thị chỉ là văn bản và không phải là định dạng html client văn bản bất cứ điều gì mail tôi sử dụng:

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
intent.putExtra(Intent.EXTRA_TEXT, "Hello World"); 
intent.putExtra(Intent.EXTRA_HTML_TEXT, "<html><body><h1>Hello World</h1></body><html>"); 

intent.setType("text/html"); // intent.setType("plain/text"); 

startActivity(Intent.createChooser(intent, "Choose Email Client:")); 

Vậy đâu là sai lầm?

+0

Có thể trùng lặp với http://stackoverflow.com/questions/2544141/send-html-mail-using-android-intent? rq = 1 – razielsarafan

+1

Không, nó không phải là bản sao. Trong bài đăng này, chỉ có câu hỏi về cách đăng các thẻ html trong một ứng dụng thư cụ thể (ví dụ: gmail). Điều đó làm việc tốt cho tôi. Tôi cần giải pháp thay thế: lấy ý định "EXTRA_TEXT" nếu ứng dụng thư khách không hỗ trợ thẻ html (ví dụ: gmx) và có ý định "EXTRA_HTML_TEXT" nếu ứng dụng thư hỗ trợ thẻ html (ví dụ: gmail). Vậy làm thế nào tôi có thể giải quyết vấn đề này? Và có gì sai với mã của tôi? – owe

+0

Có thực sự không ai thử điều này? Tôi đánh giá cao bất kỳ gợi ý nào. Cảm ơn – owe

Trả lời

4

Xin lỗi, không phải là một câu trả lời tích cực vì nó dường như không hoạt động, ít nhất là không theo cách thực sự phổ biến và đáng tin cậy. Một số bưu phẩm đang hạnh phúc với điều này:

String body = "<html>something</html>"; 
intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(body)); 

Lưu ý rằng bạn không cần phải mới EXTRA_HTML_TEXT, nó hoạt động với đứa lớn chỉ mới là tốt. Nếu điều này bao gồm tất cả những gì bạn cần thì bạn có thể OK. Nhưng nếu bạn cũng muốn giải quyết nhiều người nhận ý định khác có thể như Facebook, Skype hoặc thậm chí các ứng dụng như Drive hoặc Keep, thật không may, tôi không thể tìm thấy giải pháp hoàn hảo nhưng tôi rất muốn được chứng minh là sai.

Về cơ bản, chúng tôi có ba định dạng khác nhau:

String body = "<html>something</html>"; 
Spanned html = Html.fromHtml(body); 
String stripped = html.toString(); 

và hai người nhận có thể:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) 
    intent.putExtra(Intent.EXTRA_HTML_TEXT, ???); 
intent.putExtra(Intent.EXTRA_TEXT, ???); 

Tôi đã thử tất cả kết hợp có thể nhưng trong bất kỳ của những người, sẽ có một số nổi tiếng và rộng rãi sử dụng ứng dụng không muốn chơi độc đáo. Chúng tôi nhận được thẻ HTML được nhúng hoặc không có định dạng hoặc thậm chí không có văn bản nào cả ...

+1

giống với tôi ... mọi cập nhật? –