Откройте страницу Google Plus с помощью намерения в Android
У меня есть страница Google Plus
https://plus.google.com/u/0/b/101839105638971401281/101839105638971401281/posts
и приложение для Android. Я хочу открыть эту страницу в своем приложении. Я не хочу открывать браузер!
Откроется браузер:
URL="https://plus.google.com/b/101839105638971401281/101839105638971401281/posts";
uri = Uri.parse(URL);
it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
это сбой:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClassName("com.google.android.apps.plus", "com.google.android.apps.plus.phone.UrlGatewayActivity");
intent.putExtra("customAppUri", "10183910563897140128");
startActivity(intent);
Спасибо заранее!
[решено]
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://plus.google.com/101839105638971401281/posts")));
С помощью этого решения пользователь может выбрать приложение Google Plus APP или открыть браузер. Если APP выбран, нет сбоя.
Ответы
Ответ 1
Если у пользователя установлено приложение Google+, вы можете сделать это:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://plus.google.com/101839105638971401281/posts")));
Обратите внимание на синтаксис URI и что он не содержит /b/id/
.
Ответ 2
Вы должны сначала проверить, что пользователь уже имеет приложение G + на своем телефоне или нет? Если да, то мы можем начать его с определенного намерения, или мы можем использовать перенаправление браузера на определенную страницу.
Здесь один метод в таком потоке,
public void openGPlus(String profile) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClassName("com.google.android.apps.plus",
"com.google.android.apps.plus.phone.UrlGatewayActivity");
intent.putExtra("customAppUri", profile);
startActivity(intent);
} catch(ActivityNotFoundException e) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://plus.google.com/"+profile+"/posts")));
}
}
Теперь вы можете вызвать этот метод просто,
//117004778634926368759 is my google plus id
openGPlus("117004778634926368759");
Расширенный ответ: То же самое для twitter и facebook, которое вы можете использовать,
Для Twitter,
public void openTwtr(String twtrName) {
try {
startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("twitter://user?screen_name=" + twtrName)));
} catch (ActivityNotFoundException e) {
startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("https://twitter.com/#!/" + twtrName)));
}
}
И для Facebook,
public void openFB(String facebookId) {
try{
String facebookScheme = "fb://profile/" + facebookId;
Intent facebookIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(facebookScheme));
startActivity(facebookIntent);
} catch (ActivityNotFoundException e) {
Intent facebookIntent = new Intent(Intent.ACTION_VIEW,Uri.parse("https://www.facebook.com/profile.php?id="+facebookId));
startActivity(facebookIntent);
}
}
Ответ 3
/**
* Intent to open the official Google+ app to the user profile. If the Google+ app is not
* installed then the Web Browser will be used.
*
* </br></br>Example usage:</br>
* <code>newGooglePlusIntent(context.getPackageManager(), "https://plus.google.com/+JaredRummler");</code>
*
* @param pm
* The {@link PackageManager}.
* @param url
* The URL to the user Google+ profile.
* @return The intent to open the Google+ app to the user profile.
*/
public static Intent newGooglePlusIntent(PackageManager pm, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
try {
if (pm.getPackageInfo("com.google.android.apps.plus", 0) != null) {
intent.setPackage("com.google.android.apps.plus");
}
} catch (NameNotFoundException e) {
}
return intent;
}
Ответ 4
Что скажет трассировка стека при ее сбое?
Также я не уверен, что это изменит ситуацию, но там есть опечатка в ID. Вы писали:
intent.putExtra("customAppUri", "10183910563897140128");
но изначально идентификатор был 101839105638971401281
. Вы закончили 1 в конце.
Ответ 5
Почему не просто Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
. Android OS запрашивает все приложения, которые могут обрабатывать определенный Uri. Google+, как приложение, запрограммирован так, чтобы иметь возможность обрабатывать Uri, который вы запрашиваете. Таким образом, он появится в качестве опции в выборе (или просто перейдите к нему, если пользователь уже выбрал приложение Google+ по умолчанию для этого Uri.