Android 如何通过与不同应用程序兼容的意图显示图像
我正在尝试共享我以前保存在磁盘上的图像,发送Android 如何通过与不同应用程序兼容的意图显示图像,android,image,android-intent,gmail,share,Android,Image,Android Intent,Gmail,Share,我正在尝试共享我以前保存在磁盘上的图像,发送意向。操作\u发送。问题是我找不到一种方法来兼容不同的应用,官方的Gmail应用和TweetDeck 我要共享的图像包含在文件中: File agendaFile; // its path using getAbsolutePath() -> /data/data/com.mypackage/files/agenda.jpg final Intent intent = new Intent(android.content.Intent.ACT
意向。操作\u发送
。问题是我找不到一种方法来兼容不同的应用,官方的Gmail应用和TweetDeck
我要共享的图像包含在文件中
:
File agendaFile;
// its path using getAbsolutePath() -> /data/data/com.mypackage/files/agenda.jpg
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"));
选项A)使用Uri.fromFile
结果
- Gmail,图像附在邮件上了吗否
- Tweetdeck,图像是否添加到tweet消息中是
- Gmail,图像附在邮件上了吗是
- Tweetdeck,图像是否添加到tweet消息中否
final Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("image/jpg");
intent.putExtra(android.content.Intent.EXTRA_STREAM, agendaUri);
startActivity(Intent.createChooser(intent, "title"));
那么,有没有其他选择来共享图像?如何尽可能与大多数应用程序兼容,这是共享图像的最佳方式
谢谢 试试看
intent.setType("image/*");
对我来说,它适用于twitter、whatsapp、蓝牙
编辑:完整代码:
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);
我最终解决了在MediaStore中存储图像的问题。我所做的不是使用文件的URI,而是:
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);
最后我使用contentUriFile
:
File agendaFile;
// its path using getAbsolutePath() -> /data/data/com.mypackage/files/agenda.jpg
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"));
这个代码更简单
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);
对我来说,使用FileProvider是可行的。我将其设置为使用内置照相机拍照,并将其用于共享(见下文)
这对我来说也有同样的结果。您使用哪种方式从文件中获取uri?我使用的是Resources(我的图片位于drawable文件夹中),这可能是不同之处,请参阅编辑谢谢您共享您的代码。我试过了,但还是有同样的问题。正如您所说,区别可能在于我的映像来自磁盘,而我在构建uri时出错。无论如何谢谢你!我认为您需要更改以下行:intent.setType(“image/jpg”);至:intent.setType(“图像/jpeg”);image/jpg不是正确的MIME类型,这将导致图像无法正确传递给intent。非常感谢!有类似的和你的方式解决了我的问题。你知道Uri.formfile没有在facebook上发送图片有什么问题吗?什么代理文件?无法解析代理文件中出现错误文件是表示我希望在IntentName问题中共享的图像的文件
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);