Прикрепление файла из внутреннего хранилища к электронной почте

Подобные темы здесь не содержат ответов, которые помогли бы ... Я хочу создать сообщение электронной почты с прикрепленным файлом, файл находится во внутренней памяти. Вот код:

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();
    }

Он отлично работает с внешним хранилищем, но у меня нет подключения, когда я использую внутреннее хранилище. Я проверил - файл открывается (длина в моем приложении отображается с помощью Toast - нормально,> 0).

Я пишу это так:

  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
задан Vinay 21 September 2012 в 19:10
поделиться