Откройте страницу в Facebook, Twitter и приложении Google Plus из другого приложения - Android

Я работаю над приложением, где мне необходимо интегрировать социальные функции в разные социальные сети: 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+ или с браузером, и я хочу, чтобы он автоматически открыл его с помощью приложения, без запроса пользователя.

Есть ли простой способ сделать это? Спасибо.

Ответ 1

Найдено решение:

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

Ответ 2

Я думаю, что это вполне безопасно, потому что нам не нужно указывать компонент, просто имя пакета google + app:

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

Ответ 3

Неизвестно, если 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