Moja aplikacja generuje obrazy, które użytkownik może zapisać lub udostępnić innym osobom. Poniższy kod działa w przypadku większości aplikacji: Messenger, Facebook, Dropbox, e-mail itp. Oznacza to, że obraz jest ładowany przez wybraną aplikację, a użytkownik może z powodzeniem udostępnić obraz tej aplikacji.Udostępnianie zdjęcia w aplikacji Google+ przy użyciu funkcji Intent.ACTION_SEND i 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"));
Po wybraniu aplikacji Google+ na liście aplikacji uruchamiany jest program Google +, ale obraz nie jest wyświetlany w oknie wiadomości. Zamiast google + wyświetla komunikat tosty z:
"You can only post photos stored on your device."
To jest trochę mylące, ponieważ obraz jest na zewnętrznej karcie SD, tj /mnt/sdcard/AppDir/file.png. Korzystam z najnowszej aktualizacji aplikacji Google+ (2.3.1.242969).
Czy jest jeszcze jedna sztuczka dzielenia się obrazem z Google +?
Dziękuję.
UPDATE:
Moja aplikacja generuje obrazy, które są wspólne, więc próbka poniżej z @ Chirag-Shah nie był bezpośrednio dotyczy. Ale korzystanie z MediaStore wygląda na właściwy pomysł. Oparłem się na podstawowym kodzie poniżej:
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"));
}
Działa z Google+ i wszystkimi innymi aplikacjami, z którymi testowałem. Pozostawiam pytanie otwarte na wypadek, gdyby nie była to najlepsza praktyka. Czy ktoś może potwierdzić, że jest to właściwy sposób?
Dziękuję za tę wskazówkę. Korzystanie z Media Store wygląda jak właściwa droga, a twój post dał mi ten pomysł. –