2015-04-14 2 views
0

Я пытаюсь использовать изображение из своего приложения для Android. Я пытаюсь отправить его как вложение электронной почты, а также фотографию на WhatsApp.Совместное использование изображения с помощью приложения android

Код:

String imageUrl = Path to image (eg. sdcard/pictures/image1.jpg); 
shareImage.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Uri uriToImage= Uri.parse(imageUrl); 
        Log.d("Image", ""+uriToImage); 
        Intent shareIntent = new Intent(); 
        shareIntent.setAction(Intent.ACTION_SEND); 
        shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage); 
        shareIntent.setType("image/*"); 
        startActivity(Intent.createChooser(shareIntent, "Share image:")); 
       } 
      }); 

То, что происходит:

  1. На WhatsApp я могу разделить изображение легко.
  2. В Gmail говорится, что приложение не может быть отправлено.
  3. В Hangouts я получаю тост, который говорит Photo couldn't be found
  4. На Facebook тоже сообщение не сопровождается изображением, но я могу публиковать сообщения.
  5. На Facebook Messenger он падает без открытия.

Учебное пособие, которое я выполнил для этого, дано here. Часть учебника - это то, что я реализовал.

Еще одна вещь, которую я пробовал, - установить изображение в ImageView и посмотреть, отображается ли оно. Изображение отображается правильно. Кроме того, сообщение журнала печатает правильный путь изображения.

Я также прочитал и попробовал ответы на: Question 1 и Question 2, но безрезультатно.

Куда я иду не так?

+0

Используйте настоящий MIME-тип. 'image/*' не является реальным типом MIME. Если ваше изображение JPEG, используйте 'image/jpeg'. – CommonsWare

+0

@CommonsWare Пробовал это тоже. Не работает. –

+0

Какова фактическая стоимость 'imageUrl'? То, что вы вложили в список ваших faux-кодов, не является допустимым 'Uri'. Что делает ваш оператор 'Log.d()' фактически зарегистрированным? – CommonsWare

ответ

2

попробовать это,

try 
       { 
        File myFile = new File(share_image_path); 
        MimeTypeMap mime = MimeTypeMap.getSingleton(); 
        String ext = myFile.getName().substring(myFile.getName().lastIndexOf(".") + 1); 
        String type = mime.getMimeTypeFromExtension(ext); 
        Intent sharingIntent = new Intent("android.intent.action.SEND"); 
        sharingIntent.setType(type); 
        sharingIntent.putExtra("android.intent.extra.STREAM", Uri.fromFile(myFile)); 
        startActivity(Intent.createChooser(sharingIntent, "Share using")); 
       } 
       catch (Exception e) 
       { 
        Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show(); 
       } 
0

Да @CommonsWare Ответ правильно вы пропустили схему в Intent.putExtra(), и поэтому он не в состоянии прочитать изображение в другой социальной медиа-платформе Вот мой Решение в

Uri fileUri = Uri.fromFile(new File(imagePath)); 

//No need to do mimeType work or ext 

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.putExtra(Intent.EXTRA_STREAM, fileUri); 
intent.setType("image/*"); 
startActivity(Intent.createChooser(intent, "Share Image:")); 

BTW это работает на всех упомянутых платформ

Uri image_uri = Uri.parse("file://"+imagePath); 

Другой способ создания Uri и передачи его намерениям