2016-03-28 4 views
1

У меня возникает эта проблема, когда совместное использование изображения из моего приложения в Gmail помещает путь изображения в поле Кому.Share image puts path in to address

Вот код, который я использую:

Intent shareIntent = new Intent(); 
shareIntent.setAction(Intent.ACTION_SEND); 
shareIntent.setType("image/*"); 
shareIntent.putExtra(Intent.EXTRA_SUBJECT,"Beam Dental Insurance Card"); 
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // temp permission for receiving app to read this file 
shareIntent.setDataAndType(insuranceCardImageUri, getActivity().getContentResolver().getType(insuranceCardImageUri)); 
shareIntent.putExtra(Intent.EXTRA_STREAM, insuranceCardImageUri); 
startActivity(Intent.createChooser(shareIntent, "Share Insurance Card")); 

И вот что я получаю.

enter image description here

поле Кому: заполняется с использованием пути к изображению с «содержанием:» снят с фронта. Я попытался установить EXTRA_EMAIL на намерение, но это не поможет.

ответ

4

Во-первых, заменить:

shareIntent.setDataAndType(insuranceCardImageUri, getActivity().getContentResolver().getType(insuranceCardImageUri)); 

с:

shareIntent.setType(getActivity().getContentResolver().getType(insuranceCardImageUri)); 

в ACTION_SEND не использует Uri в поле данных Intent.

Затем удалите:

shareIntent.setType("image/*"); 

как вам не нужно вызывать setType() дважды (или даже называют setType() и setDataAndType(), как у вас здесь).

Кроме того, имейте в виду:

  • Если Uri не приходит из вашего приложения (например, ваши собственные ContentProvider) приложения сторонних как Gmail не может быть в состоянии использовать его, так как они может не иметь доступа к нему. Это существенно не отличается от передачи URL-адреса стороннему приложению, где URL-адрес требует, чтобы сеанс аутентификации пользователя был полезен.

  • Там нет требования для ACTION_SEND реализаций в честь какEXTRA_STREAMи EXTRA_TEXT`.

1

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

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.putExtra(Intent.EXTRA_TEXT, "Hey view/download this image"); 
String path = Images.Media.insertImage(getContentResolver(), loadedImage, "", null); 
Uri screenshotUri = Uri.parse(path); 

intent.putExtra(Intent.EXTRA_STREAM, screenshotUri); 
intent.setType("image/*"); 
startActivity(Intent.createChooser(intent, "Share image via...")); 

loadedImage является загруженным растровым от http://eofdreams.com/data_images/dreams/face/face-03.jpg

Acoording в Nitin Misra