Сохраните изображение во внутреннюю память Android, а затем отправьте по электронной почте с помощью Intent - PullRequest
2 голосов
/ 26 марта 2012

Я написал приложение, которое использует Environment.getExternalStoragePublicDirectory ( Environment.DIRECTORY_PICTURES), чтобы найти папку для хранения изображений. Затем я записываю jpg в эту папку и затем использую следующий код, чтобы позволить пользователю отправлять электронную почту, SMS, Facebook ... или любые приложения, настроенные на его телефоне.

  Intent i = new Intent(Intent.ACTION_SEND); 
  i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
  i.setType("image/jpg");   
  File shareImg =  new File(fileName);
  i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(shareImg)); 
  startActivity(i);  

Этот код отлично работает на устройствах, на которых я тестировал. Теперь я обнаружил, что пользователи, у которых нет SD-карты, не могут использовать этот код. Поэтому я решил попробовать записать образ во внутреннюю память. Мне удалось записать изображение в папку с приложениями и установить доступ как Context.MODE_WORLD_READABLE, но когда я запускаю намерение, GMail, SMS или любые другие карты просто сообщают мне, что они не могут прикрепить изображение , Я подумал, что проблема может заключаться в том, что изображение не было в реальной папке «картинки» устройства, но я не смог найти маршрут, эквивалентный Environment.getExternalStoragePublicDirectory ( Environment.DIRECTORY_PICTURES) для внутреннего хранения. Кто-нибудь еще мог сделать что-то подобное?

1 Ответ

1 голос
/ 27 марта 2012

Я смог решить эту проблему, изменив код для использования:

getExternalFilesDir(Environment.DIRECTORY_PICTURES)

вместо:

Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES)
...