Откройте страницу facebook из приложения Android (в версии для facebook> v11)

Я использовал, чтобы открыть мою страницу facebook из моего приложения, используя приведенный ниже код, но это больше не работает, начиная с facebook v11.0.0.11.23, выпущенного 21 июня 2014 года, любая идея открыть страницу в новом приложении facebook? Чтобы отметить, что он открывает приложение facebook, но не открывая указанную страницу, он работал очень хорошо до последнего обновления

public void openFacebookPage() {
    Intent intent = null;
    try {
        context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
        intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/<id here>"));
        //tried this also
        //intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/<id here>"));
    } catch (Exception e) {
        intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/<name here>"));
    }
    context.startActivity(intent);
}

Ответ 1

В Facebook версии 11.0.0.11.23 (3002850) fb://profile/и fb://page/больше не поддерживаются. Я декомпилировал приложение Facebook и смог придумать следующее решение:

String facebookUrl = "https://www.facebook.com/JRummyApps";
try {
    int versionCode = getPackageManager().getPackageInfo("com.facebook.katana", 0).versionCode;
    if (versionCode >= 3002850) {
        Uri uri = Uri.parse("fb://facewebmodal/f?href=" + facebookUrl);
        startActivity(new Intent(Intent.ACTION_VIEW, uri));;
    } else {
        // open the Facebook app using the old method (fb://profile/id or fb://page/id)
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/336227679757310")));
    }
} catch (PackageManager.NameNotFoundException e) {
    // Facebook is not installed. Open the browser
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(facebookUrl)));
}

Изменить: Прошло некоторое время, и похоже, что fb://профиль и fb://больше не поддерживаются. Ниже приведен метод, который я использовал в производстве:

/**
 * Intent to open the official Facebook app. If the Facebook app is not installed then the
 * default web browser will be used.</p>
 * 
 * Example usage:</p>
 * <code>newFacebookIntent(context.getPackageManager(), "https://www.facebook.com/JRummyApps");</code></p>
 * 
 * @param pm
 *            Instance of the {@link PackageManager}.
 * @param url
 *            The full URL to the Facebook page or profile.
 * @return An intent that will open the Facebook page/profile.
 */
public static Intent newFacebookIntent(PackageManager pm, String url) {
    Uri uri;
    try {
        pm.getPackageInfo("com.facebook.katana", 0);
        // http://stackoverflow.com/a/24547437/1048340
        uri = Uri.parse("fb://facewebmodal/f?href=" + url);
    } catch (PackageManager.NameNotFoundException e) {
        uri = Uri.parse(url);
    }
    return new Intent(Intent.ACTION_VIEW, uri);
}