2012-11-22 23 views
5

Używam intencji i działania.SEND, aby udostępnić moją niestandardową wiadomość w sieciach społecznościowych, takich jak WhatsApp, Twitter, Facebook i Gmail. Wszystko działa dobrze w Gmailu i innych aplikacjach poza Facebookiem! Jak mogę spersonalizować mój kod i udostępnić coś na Facebooku? Udostępniam na Facebooku za pomocą Facebook SDK bez problemu, ale chcę to zrobić z użyciem intencji.Udostępnianie zawartości na FaceBooku Android

to co używam:

Intent sendIntent = new Intent(); 
sendIntent.setAction(Intent.ACTION_SEND); 
sendIntent.putExtra(Intent.EXTRA_TEXT, knowTitle+"Read the full article via MomsApp by EnfaMama A+ at http://meadjohnsonasia.com.my/mobileapp"); 

sendIntent.putExtra(Intent.EXTRA_SUBJECT, "I just read "+knowTitle); 
sendIntent.setType("*/*"); 
startActivity(Intent.createChooser(sendIntent, "Share Your Favorite Article")); 

Odpowiedz

5

To, co zrobiłem, to przechwycić wybrany cel intenthandlerów, możesz to zrobić za pomocą swojego dostawcy akcji. Załóżmy, że utworzyłeś przedmiot, który za pomocą onclick rozpoczyna intencję. Aby to zrobić, możesz utworzyć instancję do wykonania akcji, aby to zrobić. Ten dostawca akcji może mieć setOnShareTargetSelectedListener do przechwytywania dowolnych intencji, które chcesz obsługiwać inaczej (lub wcale ^^). Zobacz poniższy kod, aby dowiedzieć się, jak skonfigurować swojego dostawcę akcji.

actionProvider.setShareIntent(createShareIntent()); 
    actionProvider.setOnShareTargetSelectedListener(new OnShareTargetSelectedListener(){ 

     @Override 
     public boolean onShareTargetSelected(ShareActionProvider source, 
       Intent intent) { 
      if ("com.facebook.katana".equals(intent.getComponent().getPackageName()) && mfacebooksharer != null) { 
       mfacebooksharer.shareStatus(subject, text); 
        return true; 
       } 
       return false; 
     } 

    }); 

Ilekroć facebook zostanie wybrana, używam mfacebooksharer obsłużyć intencję i postępuj Facebook API. Oczywiście, ten actionrpovider musi mieć zamiar. (Tak jak chciałeś pracować z intencją). Używam poniższej metody, aby utworzyć intencję.

+0

Działa to tylko w systemie Android 4.0 – Giorgi

1

Korzystanie Intent w Androidzie, można udostępnić tylko łącza bez tekstu:

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_TEXT, "http://www.google.ca"); 
startActivity(Intent.createChooser(intent, "Share with")); 

To będzie działać. Jeśli chcesz podzielić tekst i link, trzeba użyć SDK Facebook dla Androida: https://github.com/facebook/facebook-android-sdk

4

Zgodnie z Facebooka polityk Platformy, nie można wstępnie wypełnić okno zakładowego korzystając Intent.EXTRA_TEXT. Zwykle uważa się, że jest to błąd, ale jak na Raport o błędzie złożony here, a także, here, Facebook wyraźnie wspomina, że ​​tak nie jest (nie jest to błąd).

Możesz przeczytać więcej o ich Platform Policies konkretnie Platform Polityka IV.2

cytat z Platformy Polityka IV.2:

Musisz nie wcześniej wypełnić wszystkich dziedzinach powiązane z następującymi produktami: , chyba że użytkownik ręcznie wygenerował treść wcześniej w obieg pracy: historie strumienia (parametr user_message dla Facebook.streamPublish i FB.Connect.st reamPublish i parametr dla strumienia.publish), Photos (caption), Video (description), Notatki (tytuł i treść), Linki (komentarz) i Jabber/XMPP.

Te pola są przeznaczone do wyrażania się przez użytkowników. Wstępne wypełnianie tych pól powoduje utratę autentyczności głosu użytkownika.

Jedyny sposób można udostępnić historie z App jest poprzez integrację Facebook SDK, który jak na swój post, jesteś już w stanie skutecznie. Jest to jedyna dostępna opcja (niestety).

+0

OK, ale chcę, aby użytkownik skierował moje własne udostępnianie facebooków za pomocą facebook SDK, jak wykryć użytkownika klikniętego na Facebooku, a nie na przykład na Gmailu! następnie, jeśli jego facebook, mogę z łatwością robić to, co chcę –

+0

@MahdiGiveie: Chcesz, aby użytkownik wybrał Twoją aplikację z listy aplikacji, którymi może udostępniać? –

+0

nie moja aplikacja !! Chcę, aby użytkownik kliknął na Facebooku z listy aplikacji, którą użytkownik może udostępniać bezpośrednio do mojego własnego udostępniania na Facebooku! mój problem polega na tym, w jaki sposób mogę wykryć, że użytkownik kliknął na liście z Facebooka? –