使用Android ACTION_SEND通过Messenger和Facebook发送图像

时间:2011-08-01 02:41:30

标签: android facebook

在我的应用程序中,我希望能够使用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一起使用?

1 个答案:

答案 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();
        }
    };
}