2015-05-15 6 views
16
//EMAIL SENDING CODE FROM ASSET FOLDER 
    email = editTextEmail.getText().toString(); 
    subject = editTextSubject.getText().toString(); 
    message = editTextMessage.getText().toString(); 
    final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
    emailIntent.setType("file/html"); 
    emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://com.example.deepa.xmlparsing/file:///android_assets/Combination-1.html")); 
    startActivity(Intent.createChooser(emailIntent, "Send email using")); 

Наконец, я получаю файл из папки с данными (Combination-1.html).Отправка электронной почты с приложением из папки Asset

Становится

выполнения файла ошибка не найден исключение.

Есть ли другой способ отправки файла?

+0

'openAssetFile (Uri Uri,'. Пожалуйста скажите значение uri.getPath(). И uri.getLastPathSegment(). – greenapps

+0

' "Файл/html"'. Вы имеете в виду "текст/html". – greenapps

+0

'Мой AssetFileDescriptor .java class file: '. Нет. Ваш пользовательский класс поставщика контента. Вы могли бы также упомянуть в теме, пытаясь отправить html-файл из активов с помощью специального поставщика контента. Пожалуйста, будьте более информативными. – greenapps

ответ

3

Создайте объект File вашего файла папок вашего имущества и прикрепите этот объект к своему намерению электронной почты.

И как уже упоминалось в вашем Вопрос выполнения файла ошибок не обнаружено исключение это может быть причиной ссылки прекращается «Файл: /// android_asset /» не указывает на конкретный каталог, то используется только WebView для обращения к активам. Вытащил что from

вы можете открыть это в качестве входного потока и тайным это InputStream к File

in = new BufferedReader(new InputStreamReader(activity.getAssets().open(myfile.pdf))); 

Отправить этот файл объект по электронной почте следующим образом.

Intent intent = new Intent(Intent.ACTION_SEND ,Uri.parse("mailto:")); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_SUBJECT, "Card Set "); 
intent.putExtra(Intent.EXTRA_TEXT, ""); 
intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file)); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
activity.startActivity(intent); 

Где Intent.ACTION_SEND используется для отправки электронной почты, Intent.EXTRA_STREAM для вложений с помощью электронной почты. вы можете иметь несколько Intent.EXTRA_STREAM в одном намерении ссылаться на несколько вложений с помощью intent.setAction(Intent.ACTION_SEND_MULTIPLE);.

intent.setType(String mimeType) вход паров являются представлением данных MIME типа, который вы хотите получить взамен от стрельбы намерения (здесь целью экземпляра) .гд setype может быть

image/jpeg 
audio/mpeg4-generic 
text/html 
audio/mpeg 
audio/aac 
audio/wav 
audio/ogg 
audio/midi 
audio/x-ms-wma 
video/mp4 
video/x-msvideo 
video/x-ms-wmv 
image/png 
image/jpeg 
image/gif 
.xml ->text/xml 
.txt -> text/plain 
.cfg -> text/plain 
.csv -> text/plain 
.conf -> text/plain 
.rc -> text/plain 
.htm -> text/html 
.html -> text/html 
.pdf -> application/pdf 
.apk -> application/vnd.android.package-archive 
7

Самый простой способ отправить по электронной почте, чтобы создать Intent типа ACTION_SEND:

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.putExtra(Intent.EXTRA_SUBJECT, "Test"); 
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{recipient_address}); 
intent.putExtra(Intent.EXTRA_TEXT, "Attachment test"); 

Чтобы прикрепить один файл, добавить некоторые расширенные данные в Intent:

intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File("/path/to/file"))); 
intent.setType("text/html"); 

Или использовать Html .fromHtml() для создания HTML содержания:

intent.putExtra(Intent.EXTRA_TEXT, 
       Html.fromHtml(new StringBuilder() 
       .append("<h1>Heading 1</h1>") 
       .append("<p><a>http://www.google.com</a></p>") 
       .toString())); 

для нескольких приложений:

Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); 
intent.setType("text/html"); 
intent.putExtra(Intent.EXTRA_SUBJECT, "Test multiple"); 
intent.putExtra(Intent.EXTRA_TEXT, "multiple attachments"); 
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{recipient_address}); 
ArrayList<Uri> uris = new ArrayList<Uri>(); 
uris.add(Uri.fromFile(new File("/path/to/first/file"))); 
uris.add(Uri.fromFile(new File("/path/to/second/file"))); 
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 

Закончить с вызовом startActivity() передать намерение.

0

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

String filename="contacts_sid.vcf"; 
File filelocation = new 
File(Environment.getExternalStorageDirectory().getAbsolutePath(), filename); 
Uri path = Uri.fromFile(filelocation); 
Intent emailIntent = new Intent(Intent.ACTION_SEND); 
// Here you can set the type to 'email' 
emailIntent .setType("abc.xyz.cursor.dir/email"); 
String to[] = {"[email protected]"}; 
emailIntent .putExtra(Intent.EXTRA_EMAIL, to); 
// For the attachment 
emailIntent .putExtra(Intent.EXTRA_STREAM, path); 
// the mail subject 
emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Find Attachments with email"); 
startActivity(Intent.createChooser(emailIntent , "Sending email...")); 
-1

Вы не можете разделить файл папки Asset в другое приложение без ContentProvider. Вы можете отправить файл, который может быть доступен для каждого приложения. Например, кто-то может использовать память телефона или SD-карту.

Sharing Asset Check This Answer of @CommonsWare

Или Прочитайте текстовый файл и использовать @RonTLV ответа и почты.

or Скопировать файл в память и добавить к отправке. Надеюсь, что этот ответ поможет.

Смежные вопросы