有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java试图通过电子邮件发送文件

我正在尝试在我的应用程序中通过电子邮件发送我的CSV文件。当我点击send时,手机会显示我要发送给的人、主题、信息和附件,但当我点击send时,手机会显示“无法显示附件”。当我检查邮箱时,邮件就在那里,但没有文件

String to=destinatario.getText().toString().trim();
                String subj=subject.getText().toString().trim();
                String msg=message.getText().toString().trim();

                if(to.length() < 1)
                {
                    Toast.makeText(getApplicationContext(), "Mete para quem quer mandar", Toast.LENGTH_LONG).show();
                }
                else if (subj.length() < 1) {
                    Toast.makeText(getApplicationContext(), "Introduza o Tema", Toast.LENGTH_LONG).show();
                }
                else if (msg.length() < 1) {
                    Toast.makeText(getApplicationContext(), "Introduza Mensagem", Toast.LENGTH_LONG).show();
                }
                else {
                    Intent emailIntent = new Intent(安卓.content.Intent.ACTION_SEND); 
                    //emailIntent.setType("image/jpeg");
                    emailIntent.setType("message/rfc822");
                    emailIntent.putExtra(安卓.content.Intent.EXTRA_EMAIL, new String[]{to}); 
                    emailIntent.putExtra(安卓.content.Intent.EXTRA_SUBJECT, subj); 
                    emailIntent.putExtra(安卓.content.Intent.EXTRA_TEXT, msg); 
                    emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(file.getAbsolutePath()));
                    startActivity(Intent.createChooser(emailIntent, "A enviar..."));
                }   
            }

有人知道为什么会这样吗


共 (2) 个答案

  1. # 1 楼答案

    更改额外的流Uri。将字符串解析为"file://" + file.getAbsolutePath()

    只要你的文件是正确的,这就应该有效

  2. # 2 楼答案

    我使用以下代码创建带有csv附件的意图

    ArrayList<Uri> uriList = new ArrayList<Uri>();
        ArrayList<String> fileNameList = new ArrayList<String>();
        uriList.add(Uri.fromFile(f));
        fileNameList.add(f.getName());
    
        final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
        emailIntent.setType("text/plain");
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
                new String[]{""});
        emailIntent.putExtra(android.content.Intent.EXTRA_CC,
                new String[]{""});
        emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Log");
    
        if (!uriList.isEmpty()) {
            emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
            emailIntent.putStringArrayListExtra(Intent.EXTRA_TEXT, fileNameList);
        }