Подтвердить что ты не робот

Откройте страницу 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 выбран, нет сбоя.

4b9b3361

Ответ 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.