12

我正在开发一个需要集成不同社交网络的社交功能的应用程序:Facebook、Twitter、Google+。

现在,在 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+ 应用程序还是用浏览器打开它,我希望他会用应用程序自动打开它,而不用问用户。

有没有一种简单的方法可以做到这一点?谢谢。

4

3 回答 3

12

找到了解决方案:

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);
于 2012-07-04T12:14:32.540 回答
7

我认为这是相当安全的,因为我们不需要指定组件,只需指定 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);
于 2013-09-06T12:58:15.617 回答
2

未知 google plus 是否需要 Intent 中的其他信息,但作为一般的 Android 解决方案,您可以显式设置目标。您将需要 google+ 的软件包名称。

更多信息在这里:http: //developer.android.com/reference/android/content/Intent.html#setPackage%28java.lang.String%29

例如:

Intent.setPackage("com.google.android.apps.plus"); //Don't know the exact package name
于 2012-07-04T11:13:14.167 回答