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

Открыть страницу Facebook в приложении Facebook (если установлена) на Android

Я хотел бы открыть свою страницу Facebook из своего приложения для Android, если приложение Facebook доступно, если нет: эта страница должна быть открыта в браузере по умолчанию.

для этого я пробовал следующий код:

try {
  Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/MY_PAGE_ID"));
startActivity(intent);
} catch (Exception e) {
   startActivity(new Intent(Intent.ACTION_VIEW,    Uri.parse("http://www.facebook.com/MY_PAGE_NAME")));
}

Проблема заключается в следующем: У меня есть Android-устройство с новейшей версией Facebook. Если я хочу открыть из своего приложения страницу Facebook, откроется приложение Facebook, но без моей страницы.

Я вижу сообщение только:

Временная шкала загрузки неполадок.

Что не так?

4b9b3361

Ответ 1

"fb://page/ не работает с более новыми версиями приложения FB. Вы должны использовать fb://facewebmodal/f?href= для более новых версий.

Это полноценный рабочий код, который в настоящее время работает в одном из моих приложений:

public static String FACEBOOK_URL = "https://www.facebook.com/YourPageName";
public static String FACEBOOK_PAGE_ID = "YourPageName";

//method to get the right URL to use in the intent
public String getFacebookPageURL(Context context) {
        PackageManager packageManager = context.getPackageManager();
        try {
            int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode;
            if (versionCode >= 3002850) { //newer versions of fb app
                return "fb://facewebmodal/f?href=" + FACEBOOK_URL;
            } else { //older versions of fb app
                return "fb://page/" + FACEBOOK_PAGE_ID;
            }
        } catch (PackageManager.NameNotFoundException e) {
            return FACEBOOK_URL; //normal web url
        }
    }

Этот метод вернет правильный URL-адрес приложения, если он установлен, или веб-URL, если приложение не установлено.

Затем запустите намерение следующим образом:

Intent facebookIntent = new Intent(Intent.ACTION_VIEW);
String facebookUrl = getFacebookPageURL(this);
facebookIntent.setData(Uri.parse(facebookUrl));
startActivity(facebookIntent);

Это все, что вам нужно.

Ответ 2

Это работает в последней версии:

Перейдите к https://graph.facebook.com/ (https://graph.facebook.com/fsintents например).

Скопируйте свой идентификатор Используйте этот метод:

public static Intent getOpenFacebookIntent(Context context) {
    try {
        context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
        return new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/<id_here>"));
    } catch (Exception e) {
        return new Intent(Intent.ACTION_VIEW,Uri.parse("https://www.facebook.com/<user_name_here>"));
    }
}

Ответ 3

Хорошо, я модифицировал @AndroidMechanics Code, потому что на устройствах было отключено facebook, приложение сработает!

вот модифицированный getFacebookUrl:

public String getFacebookPageURL(Context context) {
        PackageManager packageManager = context.getPackageManager();
        try {
            int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode;

            boolean activated =  packageManager.getApplicationInfo("com.facebook.katana", 0).enabled;
            if(activated){
                if ((versionCode >= 3002850)) { 
                    return "fb://facewebmodal/f?href=" + FACEBOOK_URL;
                } else { 
                    return "fb://page/" + FACEBOOK_PAGE_ID;
                }
            }else{
                return FACEBOOK_URL;
            }
         } catch (PackageManager.NameNotFoundException e) {
            return FACEBOOK_URL; 
        }
    }

Единственная добавленная вещь - посмотреть, отключено ли приложение или нет, если оно отключено, приложение вызовет веб-браузер!

Ответ 4

Вот решение, которое смешивает код Jared Rummler и AndroidMechanic.

Примечание. fb://facewebmodal/f?href= перенаправляет на странную страницу facebook, которая не имеет подобных и других важных кнопок, поэтому я пытаюсь fb://page/. Он отлично работает с текущей версией Facebook (126.0.0.21.77, 1 июня 2017 года). Уловка может быть бесполезной, я оставил ее на всякий случай.

public static String getFacebookPageURL(Context context)
{
    final String FACEBOOK_PAGE_ID = "123456789";
    final String FACEBOOK_URL = "MyFacebookPage";

    if(appInstalledOrNot(context, "com.facebook.katana"))
    {
        try
        {
            return "fb://page/" + FACEBOOK_PAGE_ID;
            // previous version, maybe relevant for old android APIs ?
            // return "fb://facewebmodal/f?href=" + FACEBOOK_URL;
        }
        catch(Exception e) {}
    }
    else
    {
        return FACEBOOK_URL;
    }

}

Здесь функция appInstalledOrNot, которую я взял (и изменил) из ответа Aerrow на этот пост

private static boolean appInstalledOrNot(Context context, String uri)
{
    PackageManager pm = context.getPackageManager();
    try
    {
        pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
        return true;
    }
    catch(PackageManager.NameNotFoundException e)
    {
    }

    return false;
}

Как получить идентификатор Facebook на странице:

  • Перейдите на страницу
  • Щелкните правой кнопкой мыши и View Page Source
  • Найти на странице: fb://page/?id=
  • Здесь вы идете!

Ответ 5

вы можете использовать это:

try {
                Intent followIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://facewebmodal/f?href=" +
                        "https://www.facebook.com/app_scoped_user_id/"+scoped user id+"/"));
                activity.startActivity(followIntent);
            } catch (Exception e) {
                activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/" + user name)));
                String errorMessage = (e.getMessage() == null) ? "Message is empty" : e.getMessage();
            }

внимание: вы можете получить идентификатор пользователя из области " ссылка " facebook api

Ответ 6

Я уже ответил здесь, и он работает для меня, пожалуйста, обратитесь к этому link fooobar.com/info/45442/...

    String socailLink="https://www.facebook.com/kfc";
    Intent intent = new Intent(Intent.ACTION_VIEW);
    String facebookUrl = Utils.getFacebookUrl(getActivity(), socailLink);
    if (facebookUrl == null || facebookUrl.length() == 0) {
        Log.d("facebook Url", " is coming as " + facebookUrl);
        return;
    }
    intent.setData(Uri.parse(facebookUrl));
    startActivity(intent);

обратитесь к ссылке, чтобы получить часть отдыха.