Мое приложение создает изображения, которые пользователь может сохранить или поделиться с другими. Ниже приведен код для большинства приложений: Messenger, Facebook, Dropbox, электронная почта и т.д. Значение изображения загружается выбранным приложением, и пользователь может совместно использовать изображение с этим приложением.
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"));
Однако, когда я выбираю Google+ в списке приложений, google + запускается, но изображение не включено в почтовое окно. Вместо этого google + отображает сообщение Toast с:
"You can only post photos stored on your device."
Это немного запутанно, потому что изображение находится на внешней SD-карте, то есть /mnt/sdcard/AppDir/file.png. Я использую последнее обновление приложения Google+ (2.3.1.242969).
Есть ли еще один трюк для совместного использования изображения с Google +?
Спасибо.
UPDATE:
Мое приложение генерирует изображения, которые являются общими, поэтому образец ниже из @chirag-shah не был непосредственно применим. Но использование MediaStore выглядит как правильная идея. Я остановился на базовом коде ниже:
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"));
}
Это работает с Google+ и всеми другими приложениями, с которыми я тестировал. Я оставляю вопрос открытым, если это не лучшая практика. Кто-нибудь может подтвердить, что это правильный способ сделать это?