0
回答
Android 发送 email 时,附件存于内部存储的问题
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
我想创建一个包含附件的 email ,文件存放于内部存储空间,代码如下:
Intent i = new Intent(Intent.ACTION_SEND);
    i.setType("text/plain");
    i.putExtra(Intent.EXTRA_EMAIL  , new String[]{email});
    i.putExtra(Intent.EXTRA_SUBJECT, "Smart Weight Tracker");
    i.putExtra(Intent.EXTRA_TEXT   , "CSV file is in attachment");

    Uri uri;
    if(useExternal){
        uri = Uri.fromFile(new File(this.getExternalFilesDir(null),fname));
    }
    else{
        File f = new File(this.getFilesDir(),fname);
        f.setReadable(true, false);
        f.setWritable(true, false);
        uri = Uri.fromFile(f);
    }

    i.putExtra(Intent.EXTRA_STREAM, uri);

    try {
        startActivity(Intent.createChooser(i, "Send mail..."));
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(MainActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
    }

如果附件存放于外部存储中,上面代码可正常工作,但是使用内部存储的附件时,却无附件发出。

文件读取方式:

OutputStreamWriter out =
                new OutputStreamWriter(con.openFileOutput(fname, Context.MODE_WORLD_READABLE));

在 logcat 中可看到下面的日志信息:

I/Gmail (28480): >>>>> Attachment uri: file:///data/data/Android.MyApp/files /31.10.2011.csv I/Gmail (28480): >>>>> type: text/plain I/Gmail (28480): >>>>> name: 31.10.2011.csv I/Gmail (28480): >>>>> size: 0

Size == 0!

请问这是怎么回事啊?

 

举报
无鸯
发帖于6年前 0回/1K+阅
顶部