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