2015-08-01 2 views
-1

Java, Android Studio, Genymotion.Android Studio, Genymotion - отправка электронной почты с вложением файла txt: отображение в gmail, но не отправка

Уважаемые коллеги,

Я посылаю электронную почту (Intent) с TXT присоединять из приложения Android. Файл Txt был создан приложением ранее. В genymotion в клиенте gmail это вложение (файл около 1 Kb) отображается, но реальная почта идет без вложения.

Фрагменты кода:

// file creating 
    ... 
     final String FILENAME = "file"; 
    ... 

    try { 
      // отрываем поток для записи 
      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(openFileOutput(FILENAME, MODE_PRIVATE))); 

      // writing any data 

      bw.write ("\n"); 
... 
      Log.d(LOG_TAG, "file is created"); 


      bw.close(); 
} 

// sending email with intent 

    public void sendEmailwithMailClient(){ 

     Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
// sending email 

     emailIntent.setType("plain/text"); 
     emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
     emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, getString(R.string.app_name)); 
     emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Hello!"); 


     File file = new File(getFilesDir(), FILENAME); 

//  if (!file.exists() || !file.canRead()) { 
//   return;} 



     Uri uri = Uri.fromFile(file); 
     emailIntent.putExtra(Intent.EXTRA_STREAM, uri); 

     startActivity(Intent.createChooser(emailIntent, "Pick an Email provider")); 


    } 

ли я правильно определить Uri для крепления с помощью getFilesDir() и FILENAME? Почему электронная почта теряет привязанность при отправке? Это проблема Genymotion, или на самом деле я не прикрепляю ничего к почте и прикреплять отображение в Genymotion - это просто подделка?

Спасибо заранее!

ответ

1

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

File file = new File(getFilesDir(), FILENAME); 

создает ваш файл в каталоге /data/data/package_name/files. Это не доступно для других приложений. Если вы все же хотите поделиться файлом с частным хранилищем приложений, вам необходимо создать свой ContentProvider.

+0

Спасибо! В точку! – Denis

+0

Отметьте ответ, если он вам поможет. –