Я боролся с проблемой все утро и думал, что сейчас спрошу здесь.
Я использую следующий код, чтобы прикрепить 9 изображений патчей к электронному письму:
sendIntent.setType("image/png");
ArrayList<Uri> uris = new ArrayList<Uri>();
uris.add(Uri.parse("android.resource://com.android9patch.viewer/raw/" + mBaseFilename + String.format("%05d", mAppBackgroundCurrentFile)) );
sendIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(Intent.createChooser(sendIntent, "Email:"));
Проблема в том, что когда я получаю электронное письмо, изображение представляет собой не оригинальный патч 9, а версию без маркеров масштаба и отступов.
Я должен получить такой результат:
![Expected result attachment](https://i.stack.imgur.com/dh3hA.png)
Но я получаю это вместо:
![Result received](https://i.stack.imgur.com/94Fcy.png)
Я подозреваю, что приложение обрабатывает необработанный файл перед отправкой?
Дополнительная информация :
Я сейчас пытаюсь сохранить файл на SDCARD, прежде чем прикреплять их к электронному письму. Ну, по какой-то причине, даже копирование удаляет маркеры масштаба и отступов ... Я не понимаю.
Вот моя функция копирования, которую я взял из Функция необработанного копирования .
private boolean copyToSDCard( int resourceID, String finalName )
{
String extStorageDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();
OutputStream out = null;
try
{
InputStream in = getResources().openRawResource( resourceID );
out = new FileOutputStream(extStorageDirectory + "/" + finalName + ".9.png");
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
}
catch (Exception e)
{
Log.e("copyToSDCard", e.toString());
e.printStackTrace();
}
return false;
}
private void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1){
out.write(buffer, 0, read);
}
}