首页 > 解决方案 > 使用android意图时电子邮件附件为空白

问题描述

我需要使用我的应用程序通过邮件发送附件以及一些基本信息。但是当我尝试使用意图调用邮件活动时,附件是空白的。

这是获取文件路径然后发送附件的代码

public class Pickafile extends AppCompatActivity {
TextView textFile;
static String FilePath;
private static final int PICKFILE_RESULT_CODE = 1;

/**
 * Called when the activity is first created.
 */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gallery);

    Button buttonPick = (Button) findViewById(R.id.buttonpick);
    Button bp = (Button) findViewById(R.id.proceed);
    textFile = (TextView) findViewById(R.id.textfile);

    buttonPick.setOnClickListener(new Button.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType("file/*");
            startActivityForResult(intent, PICKFILE_RESULT_CODE);

        }
    });

    bp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_SENDTO);
            //intent.setType("text/plain");
            intent.setData(Uri.parse("mailto:"));
            intent.putExtra(Intent.EXTRA_SUBJECT, " Report Particulars for " + MainActivity.name);
            /*File root = Environment.getExternalStorageDirectory();
            File file = new File(root, FilePath);
            if (!file.exists() || !file.canRead()) {
                return;
            }*/
            /*if(FilePath!=null)
            {
                intent.putExtra(Intent.EXTRA_STREAM, FilePath);
            }*/
            intent.putExtra(Intent.EXTRA_TEXT, MainActivity.testfunc());
            intent.putExtra(Intent.EXTRA_STREAM, FilePath);
            //startActivity(Intent.createChooser(intent, "Pick an Email provider"));
            if (intent.resolveActivity(getPackageManager()) != null) {
                startActivity(intent);
            }
        }
    });
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    switch (requestCode) {
        case PICKFILE_RESULT_CODE:
            if (resultCode == RESULT_OK) {
                FilePath = data.getData().getPath();
                textFile.setText(FilePath);
            }
            break;

    }
}
}

testfunc() 用于获取邮件正文(姓名、年龄、电话等)

提前致谢!

标签: androidgmail

解决方案


如果有任何错误,您应该检查日志。可能的情况: 1. 文件太大,超过电子邮件附件的最大大小(Gmail 为 20Mb) 2. 如果文件保存在外部存储中,则缺少 READ_EXTERNAL_STORAGE 权限。3.清单中缺少file_provider


推荐阅读