/ / Android местен имейл клиент не извлича файлове от местонахождение Environment.getExternalStorageDirectory (). GetPath () - андроид, имейл-прикачени файлове, имейл клиент

Android роден имейл клиент не извлича файлове от местоположението Environment.getExternalStorageDirectory (). GetPath () - android, email-attachments, email-client

Имам приложение за Android, за което имам възможност да изпратя регистрационните файлове по имейл

За това използвам следната процедура

String outputPath=Environment.getExternalStorageDirectory().getPath()+ File.separator+"sundeeplogs"+ File.separator;

File dir = new File (outputPath);
if (!dir.exists())
{
dir.mkdirs();
}

File zipFileSDCard = new File(outputPath+"sundeep_logs.zip");

Сега ще копирам цип, който е на сигурно място до zipFileSDCard.

Проверих, че файлът е успешно копиран

добавяне на zip файла към намерението

targetedShare.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(zipFileSDCard));

когато изпратя имейл с приложение за Gmail, тогава имейлът се изпраща с прикачените файлове и мога да видя прикачения файл в получения имейл.

проблем:

когато използвам Android местен клиент за електронна поща, той няма да прикачи файла понякога, дори ако той се свърже и е изпратен имейл, че няма прикачен файл в получения имейл.

Накрая открих проблема, поради който липсва прикачен файл, но не можах да намеря причината, поради която местният клиент е отхвърлил прикачения файл. проблема, обяснен в тази връзка Изтегленият прикачен файл не е маркиран за грешка при изтегляне в Android

Отговори:

0 за отговор № 1

Коя OS версия използвате? на по-стари устройства, установих, че това просто не работи с приложението клиент на Gmail.


0 за отговор № 2

Изглежда, че GMail е много по-снизходителен от някои приложения на местни имейли по отношение на прикачените файлове.

След много анализи, опити и грешки, установих, че следното намерение ще работи както с GMail, така и с приложението за имейл на Samsung Galaxy S5 (без гаранции за други устройства)

public static void emailFile(Activity context, File attachmentInCacheDir, String to, String subject, String body) {
Intent intent  = new Intent(Intent.ACTION_SEND);//SENDTO does not seem to work for native
intent.setData(Uri.fromParts("mailto",to, null));
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { to });
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, body);
intent.setType("message/email");
if (attachmentInCacheDir != null) {
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://" + CachedFileProvider.getAuthority(context) + "/" + attachmentInCacheDir.getName()));
}
context.startActivityForResult(Intent.createChooser(intent, "Send Email"), 1000);
}

Както можете да видите, използвам доставчик като Uriтака че не трябва да излагам данни, като копирам в публична директория.Аз не съм сигурен дали това е друго изискване за всички местни приложения за електронна поща да работят.Когато внедрих доставчика, трябваше да внедря метода "заявка", за да върна големината на файла на прикачения файл, тъй като иначе родното приложение ще го отхвърли.