2012-04-02 37 views
9

Tôi đang lãng phí rất nhiều thời gian, cố gắng chia sẻ một hình ảnh jpeg đơn giản hoạt động thông qua việc chia sẻ Intent.chia sẻ hình ảnh qua Intent (Facebook và đồng)

Điều quan trọng nhất như thường lệ là Facebook và như thường lệ, nó không hoạt động.

Intent shareIntent = new Intent(Intent.ACTION_SEND); 
Uri picUri = Uri.parse("http://someserver.com/somepic.jpg"); 
shareIntent.setType("image/jpeg"); 
shareIntent.putExtra(Intent.EXTRA_STREAM, picUri); 
shareIntent.putExtra(Intent.EXTRA_TEXT, someString); 
startActivity(Intent.createChooser(shareIntent, "some text...")); 

Trình chọn mở ra độc đáo, Facebook cũng mở và làm cho tôi đăng nhập, nhưng sau đó nó cho tôi biết rằng tải không thành công. Tôi cũng đã thử Flicker và Mail, và tất cả đều thất bại. Sau đó, tôi đã cố gắng để ghi ảnh vào tập tin địa phương và gửi từ đó, cũng thất bại:

Drawable dr = ImageLoader.getDrawable(url); 
    Bitmap bmp = ((BitmapDrawable)dr).getBitmap(); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.JPEG, 80, stream); 
    byte[] data = stream.toByteArray(); 

    FileOutputStream ostream; 
    try { 
     ostream = this.openFileOutput("pic.jpeg", Context.MODE_WORLD_READABLE); 
     ostream.write(data); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    Uri picUri = Uri.fromFile(new File("pic.jpeg")); 
    shareIntent.putExtra(Intent.EXTRA_STREAM, picUri); 

Tôi đã không có đầu mối nếu tôi làm điều đó một cách chính xác, đã không làm điều đó trước.

Lần thử cuối cùng của tôi là chỉ gửi chuỗi HTML có hình ảnh được bao gồm dưới dạng thẻ img. Nhưng Facebook dường như không xử lý loại "text/html", do đó, nó không phải là một lựa chọn. Tôi chắc rằng nó chỉ cần vài dòng mã. Nhưng cái nào?

chỉnh sửa

Tôi quên dòng

shareIntent.putExtra(Intent.EXTRA_STREAM, picUri); 

trong đoạn mã đầu tiên. Nó đã ở đó khi tôi cố gắng, không làm việc. Không ngủ quá lâu ...

+5

Bạn đã bao giờ tìm thấy cách hợp lý để chia sẻ ảnh từ một URL chưa? – cimnine

+0

Hi didi_X8, Bạn có tìm thấy giải pháp cho vấn đề này không? Như tôi đang bị mắc kẹt tại nó quá – Elshaer

Trả lời

0

Tôi nghĩ điều này sẽ trả lời câu hỏi của bạn. https://stackoverflow.com/a/3553102/478537

Có vẻ như bạn đang đi đúng hướng, tất cả những gì tôi có thể thấy là trong đoạn mã đầu tiên của bạn, bạn không sử dụng picUri ở bất kỳ đâu và do đó nó không được gửi đi, và thứ hai, bạn đang thiết lập EXTRA_STREAM hai lần (sẽ không gây ra bất kỳ vấn đề nào, chỉ cần mã dự phòng).

+0

sry, quá lâu trước đây ... Cảm ơn tốt Tôi không cần phải làm việc với công cụ FB atm, do đó tôi sẽ không kiểm tra nếu điều này hoạt động. Có lẽ một ngày nào đó tôi cần nó một lần nữa. Thanks anyway –

0

..Intent.EXTRA_TEXT, someString.

Điều này sẽ không thực hiện giao dịch của bạn với Facebook- không phải "someString" - Facebook chia sẻ mong đợi và tìm kiếm một URL được truyền qua EXTRA_TEXT. Tại sao - không hỏi .. Tôi không hiểu các bạn

0

Vâng, tôi đã dành rất nhiều thời gian và vấn đề là phần mở rộng của tệp (png đã xảy ra sự cố nên bỏ qua phần mở rộng tệp trong trường hợp này và sử dụng "jpg"), hãy thử các mã sau đây

public static void shareImageFileWithIntent(File imageFile, Context context) { 
    MimeTypeMap mime = MimeTypeMap.getSingleton(); 
    String type = mime.getMimeTypeFromExtension("jpg"); 
    Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
    sharingIntent.setType(type); 
    sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imageFile)); 
    sharingIntent.putExtra(Intent.EXTRA_TEXT, "your extra text"); 
    sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "your subject"); 
    context.startActivity(Intent.createChooser(sharingIntent, context.getString(R.string.share_image_intent))); 
} 
0

Thay vì chuyển hình ảnh Mục đích, bạn có thể tạo Lớp mới và lưu nó từ một hoạt động. Và truy cập hình ảnh đó từ một hoạt động khác.

+0

Nó trông giống như một bình luận hơn là một câu trả lời. –

Các vấn đề liên quan