How to show an image through an intent being compatible with different apps

前端 未结 4 934
Happy的楠姐
Happy的楠姐 2021-01-03 12:22

I\'m trying to share an image I have previously saved on disk, sending an Intent.ACTION_SEND. The problem is that I can\'t find a way to be compatible with diff

相关标签:
4条回答
  • 2021-01-03 13:00

    For me using FileProvider worked out. I had it set up for taking photos with built-in camera and used it for sharing (see below).

    final Uri uri = FileProvider.getUriForFile(mActivity, "com.paeuba.paragonik.fileprovider", photoFile);
    Intent intent = ShareCompat.IntentBuilder.from(mActivity).setType("image/jpeg").setStream(uri).createChooserIntent();
    mActivity.startActivity(intent);
    
    0 讨论(0)
  • 2021-01-03 13:08

    try

    intent.setType("image/*");
    

    for me it works for twitter, whatsapp, bluetooth....

    EDIT: full code:

    Intent intent = new Intent();
            intent.setAction(Intent.ACTION_SEND);
            intent.setType("image/*");
    
            intent.putExtra(android.content.Intent.EXTRA_SUBJECT, title);
            intent.putExtra(android.content.Intent.EXTRA_TEXT, R.string.visita);
            Uri uri = Uri
            .parse("android.resource://com.package.xname/drawable/"
                    + i);
            intent.putExtra(Intent.EXTRA_STREAM, uri);
    
    0 讨论(0)
  • 2021-01-03 13:16

    this code is more easy

    Intent intent = new Intent(Intent.ACTION_SEND);
                intent.setData(Uri.parse("mailto:"));
                intent.putExtra(intent.EXTRA_EMAIL,"XXXXX@XXXX.com");
                intent.putExtra(intent.EXTRA_SUBJECT, "XXXXX");
                intent.putExtra(Intent.EXTRA_TEXT, "XXXXX");
                intent.setType("message/rfc822");
                chosser = Intent.createChooser(intent, "Enviar Email");
                intent.putExtra(intent.EXTRA_STREAM, uri);
                startActivity(chosser);
    
    0 讨论(0)
  • 2021-01-03 13:17

    I finally solved the problem storing the image at the MediaStore. Instead of using the URI of the File what I do is:

    String agendaFilename = agendaFile.getAbsolutePath();
    
    final ContentValues values = new ContentValues(2);
    values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
    values.put(MediaStore.Images.Media.DATA, agendaFilename);
    final Uri contentUriFile = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    

    And finally I use contentUriFile:

    final Intent intent = new Intent(android.content.Intent.ACTION_SEND);
    intent.setType("image/jpg");
    intent.putExtra(android.content.Intent.EXTRA_STREAM, contentUriFile);
    startActivity(Intent.createChooser(intent, "title"));
    
    0 讨论(0)
提交回复
热议问题