2012-07-04 12 views
10

Pracuję nad aplikacją, w której potrzebuję zintegrować funkcje społecznościowe różnych sieci społecznościowych: Facebook, Twitter, Google+.Otwórz stronę w aplikacji Facebook, Twitter i Google Plus z innej aplikacji - Android

Na razie w Facebooku i Twitterze jestem rozpoznawane, jeżeli użytkownik posiada natywną aplikację, a jeśli to zrobi, jestem otwierając go i pokazać mu mój fan page.

na Twitterze używam następny kod:

try { 

    Intent intent = new Intent(Intent.ACTION_VIEW, 
     Uri.parse("twitter://user?screen_name=[user_name]")); 
    startActivity(intent); 

    }catch (Exception e) { 
     startActivity(new Intent(Intent.ACTION_VIEW, 
      Uri.parse("https://twitter.com/#!/[user_name]"))); 
    } 

I na Facebooku następnego kodu:

try{ 

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/" + PROFILE_FACEBOOK_APP_ID)); 
startActivity(intent); 

}catch(Exception e){ 

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.facebook.com/UserNamePage"))); 
} 

Teraz chcę zrobić to samo dla Google+. Widziałem, że mogę przeglądać moją stronę fanowską z kolejnym Urlem https://plus.google.com/MY_PAGE_ID/, ale wciąż mnie pytam, czy chcę go otworzyć z aplikacją Google+ lub z przeglądarką, i chcę, żeby otworzył ją automatycznie z aplikacją, bez pytania użytkownik.

Czy istnieje prosty sposób na zrobienie tego? Dzięki.

Odpowiedz

11

znalazł rozwiązanie:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setClassName("com.google.android.apps.plus", 
"com.google.android.apps.plus.phone.UrlGatewayActivity"); 
intent.putExtra("customAppUri", "FAN_PAGE_ID"); 
startActivity(intent); 
+3

+1 dla Ciebie Udostępnianie kodu. – VenomVendor

+0

na stałe ... co jeśli zmienią nazwę pakietu lub cokolwiek innego .. –

+0

@Ovidiu Latcu Dla nazwy pakietu można użyć programu PackageManager, aby uzyskać właściwą nazwę pakietu. –

2

Nieznane, jeśli Google Plus potrzebuje innych informacji w intencji, ale jako ogólne rozwiązanie systemu Android można wyraźnie ustawić cel. Będziesz potrzebować nazwy pakietu Google +.

Więcej informacji tutaj: http://developer.android.com/reference/android/content/Intent.html#setPackage%28java.lang.String%29

Na przykład:

Intent.setPackage("com.google.android.apps.plus"); //Don't know the exact package name 
+0

To nie pomaga, wciąż tak samo. dzięki. –

7

Myślę, że to całkiem bezpieczne, ponieważ nie musimy określić komponent , tylko nazwa pakietu aplikacji Google +:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("https://plus.google.com/[Google+ID]/")); 
intent.setPackage("com.google.android.apps.plus"); // don't open the browser, make sure it opens in Google+ app 
startActivity(intent); 
Powiązane problemy