在我的应用程序中,我希望能够使用ACTION_SEND意图通过电子邮件,Facebook或Messenger(MMS)发送保存在本地SD卡上的图片。有了我的代码,我可以成功通过电子邮件将图片作为附件发送,但当我选择Facebook时,我收到错误,“加载照片时出错”,当我尝试选择Messenger时,它说:“抱歉,你不能添加这个图片到你的留言“。
这是我的代码:
File pic = new File(Environment.getExternalStorageDirectory()+ File.separator + "images" + File.separator + "picture.jpg");
Uri pngUri = Uri.fromFile(pic);
Intent picMessageIntent = new Intent(android.content.Intent.ACTION_SEND);
picMessageIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
picMessageIntent.setType("image/jpeg");
picMessageIntent.putExtra(Intent.EXTRA_STREAM, pngUri);
startActivity(Intent.createChooser(picMessageIntent, "Send your picture using:"));
有没有人知道我需要更改什么才能使此代码与Messenger和Facebook一起使用?
答案 0 :(得分:4)
要使用彩信发送图像,您必须获取媒体提供程序的URI,文件路径中的URI不起作用(之前我遇到过此问题)。对于Facebook,我不知道如何使用ACTION_SEND发送图像,因为我使用Facebook SDK发布状态并发送照片(这是一个更好的方法,因为你不需要依赖之前安装了facebook的手机)。
protected void sendMMS(final String body, final String imagePath) {
MediaScannerConnectionClient mediaScannerClient = new MediaScannerConnectionClient() {
private MediaScannerConnection msc = null;
{
msc = new MediaScannerConnection(getApplicationContext(), this);
msc.connect();
}
public void onMediaScannerConnected() {
msc.scanFile(imagePath, null);
}
public void onScanCompleted(String path, Uri uri) {
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra("sms_body", body);
sendIntent.putExtra(Intent.EXTRA_STREAM, uri);
sendIntent.setType("image/png");
startActivity(sendIntent);
msc.disconnect();
}
};
}