я разрабатываю одно приложение почтового клиента в Android, где TextView не отображает HTML содержимое должным образом - PullRequest
0 голосов
/ 21 апреля 2020

Я разрабатываю одно почтовое клиентское приложение на Android, используя JavaMail. Я читаю сообщение с сервера и показываю тело сообщения в TextView. если любое электронное письмо имеет html тело, то содержимое не отображается должным образом в TextView это приходит как обычный текст. Чтобы показать содержимое html, я написал следующий код:

mbody=(TextView)findViewById(R.id.mbody);


mbody.setText(Html.fromHtml(str));
mbody.setMovementMethod(LinkMovementMethod.getInstance());

Есть ли какой-либо элемент управления или способ показать тело письма как html вместе со встроенным изображением?

Мои коды:

                   for (int x = 0; x < multipart.getCount(); x++) {
                    BodyPart bodyPart = multipart.getBodyPart(x);
                    //Integer ctr = MainActivity.maxSlno();

                    String disposition = bodyPart.getDisposition();

                    if (disposition != null && (disposition.equals(BodyPart.ATTACHMENT))) {
                        System.out.println("Mail have some attachment : ");

                        Log.i("snt", "33");
                        DataHandler handler = bodyPart.getDataHandler();
                        File root =contx.getFilesDir() ;//Environment.getExternalStorageDirectory();
                        String path = root.getPath() + "/" + handler.getName();//+ "/PSattachment.psz";
                        File savedFile = new File(path);
                        String destFilePath = path;//.getFileName();
                        MainActivity.addAttachment(id, path);

                        FileOutputStream output = new FileOutputStream(destFilePath);

                        InputStream input = bodyPart.getInputStream();

                        byte[] buffer = new byte[4096];

                        int byteRead;

                        while ((byteRead = input.read(buffer)) != -1) {
                            output.write(buffer, 0, byteRead);
                        }
                        output.close();

                        System.out.println("file name : " + handler.getName());

                    } else {
                        Log.i("snt", "44");
                        String str;//=bodyPart.toString();//(bodyPart.getContent());
                        if(bodyPart instanceof Part) {
                            if(bodyPart.getContent() instanceof String)
                            {
                                str=bodyPart.getContent().toString();
                            }
                            else {
                                MimeMultipart mimeMultipart = (MimeMultipart) bodyPart.getContent();
                                str = getTextFromMimeMultipart(mimeMultipart);
                            }
                        }
                        else
                            str=bodyPart.getContent().toString();

                        Log.i("snt", str);
                        body=str;
                        detail_mail.mbody.setText(Html.fromHtml(str));
                        MainActivity.updateBody(str,id);
                    }
                }

Заранее благодарим за помощь.

...