Ứng dụng của tôi tạo hình ảnh mà người dùng có thể lưu hoặc chia sẻ với người khác. Mã bên dưới hoạt động với hầu hết các ứng dụng: Messenger, Facebook, Dropbox, email, v.v. Ý nghĩa, hình ảnh được tải bởi ứng dụng đã chọn và người dùng có thể chia sẻ hình ảnh thành công với ứng dụng đó.Chia sẻ hình ảnh với ứng dụng Google+ bằng cách sử dụng Intent.ACTION_SEND và Intent.EXTRA_STREAM
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/png");
File o = new File(dir, "file.png");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(o));
startActivity(Intent.createChooser(intent , "Send options"));
Tuy nhiên, khi tôi chọn Google+ trong danh sách ứng dụng, google + bắt đầu, nhưng hình ảnh không được bao gồm trong cửa sổ bài đăng. Thay vào đó, google + sẽ hiển thị một thông điệp Toast với:
"You can only post photos stored on your device."
Đây là một chút bối rối, bởi vì hình ảnh trên thẻ SD bên ngoài, ví dụ: /mnt/sdcard/AppDir/file.png. Tôi đang sử dụng bản cập nhật mới nhất của ứng dụng Google+ (2.3.1.242969).
Có mẹo nào khác để chia sẻ hình ảnh với google + không?
Cảm ơn bạn.
UPDATE:
Ứng dụng của tôi tạo ra những hình ảnh được chia sẻ, vì vậy các mẫu dưới đây từ @ Chirag-shah là không trực tiếp áp dụng. Nhưng, bằng cách sử dụng MediaStore trông giống như ý tưởng đúng. Tôi đã giải quyết trên mã cơ bản bên dưới:
void shareImage(int position) {
File f = getFileFor(position);
ContentValues values = new ContentValues(2);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/png");
values.put(MediaStore.Images.Media.DATA, f.getAbsolutePath());
Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/png");
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent , "Send options"));
}
Điều này hoạt động với Google+ và tất cả các ứng dụng khác mà tôi đã thử nghiệm. Tôi để câu hỏi mở trong trường hợp đây không phải là cách thực hành tốt nhất. Bất cứ ai có thể xác nhận rằng đây là đúng cách để làm điều đó?
Cảm ơn bạn về mẹo này. Sử dụng Media Store trông giống như một cách phù hợp để đi và bài đăng của bạn đã cho tôi ý tưởng đó. –