2012-07-04 61 views
10

我正在研究一個應用程序,我需要整合不同社交網絡的社交功能:Facebook,Twitter和Google+。在其他應用程序的Facebook,Twitter和Google Plus應用程序中打開頁面 - Android

現在,在Facebook和Twitter上,如果用戶擁有本機應用程序,並且如果他有,我會打開它並向他展示我的粉絲頁面。

對於Twitter的我用下面的代碼:

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]"))); 
    } 

而對於Facebook的下一個代碼:

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"))); 
} 

現在我想要做同樣的事情使用Google+。我看到我可以通過下一個Url https://plus.google.com/MY_PAGE_ID/瀏覽我的粉絲頁面,但它不斷詢問我是否想使用Google+應用程序或瀏覽器打開它,並且我希望他會自動使用該應用程序打開它,而不會詢問用戶。

有沒有簡單的方法來做到這一點? 謝謝。

回答

11

找到了解決辦法:

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爲你分享代碼。 – VenomVendor

+0

硬編碼...如果他們更改軟件包名稱或其他什麼.. –

+0

@Ovidiu Latcu對於軟件包名稱,您可以使用PackageManager來獲取正確的軟件包名稱。 –

7

我認爲這是相當安全的,因爲我們並不需要指定組件,只是谷歌+應用程序包名稱:

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); 
相關問題