Abrir a página do Facebook no aplicativo do Facebook (se instalado) no Android [duplicate]

esta pergunta já tem uma resposta aqui:

  • Abrir a página do Facebook do aplicativo Android? 20 respostas

gostaria de abrir a minha página no Facebook do meu aplicativo Android, se o aplicativo do Facebook estiver disponível - se não: esta página deve ser aberta no navegador padrão.

para isso tentei o seguinte código:

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

Problema e: Eu tenho aqui um dispositivo Android com a mais nova versão do Facebook. Se eu gostaria de abrir a partir do meu aplicativo a página do Facebook, o aplicativo do Facebook vai abrir , mas sem a minha página.

só vejo a mensagem:

Problemas A Carregar A Linha Temporal.

O que se passa?

6 answers

"fb://page/ não funciona com versões mais recentes do aplicativo FB. Você deve usar fb://facewebmodal/f?href= para versões mais recentes.

Este é um código de trabalho completo que vive num dos meus aplicativos.
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
        }
    }

Este método irá devolver o url correcto para a aplicação se estiver instalado ou url web se a aplicação não estiver instalada.

Depois começa uma intenção do seguinte modo:

Intent facebookIntent = new Intent(Intent.ACTION_VIEW);
String facebookUrl = getFacebookPageURL(this);
facebookIntent.setData(Uri.parse(facebookUrl));
startActivity(facebookIntent);
É tudo o que precisas.
 99
Author: AndroidMechanic - Viral Patel, 2016-01-02 09:11:00

Isto funciona na última versão:

Vá para https://graph.facebook.com/ (https://graph.facebook.com/fsintents por exemplo).

Copia a tua identificação. Use este método:

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>"));
    }
}
 9
Author: Yash Jain, 2016-01-02 09:18:36
Ok, eu modifiquei o código @ AndroidMechanics, porque nos dispositivos que estavam no facebook está desativado os crashes do aplicativo!

Aqui está o modificado 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; 
        }
    }

A única coisa adicionada é olhar se o aplicativo está desativado ou não se ele está desativado o aplicativo vai chamar o webbrowser!

 9
Author: Seref, 2016-10-01 09:38:36
Eis uma solução que mistura o código por Jared Rummler e Androidmecânico.

nota: fb://facewebmodal/f?href= redireciona para uma página estranha do facebook que não tem os botões como e outros importantes, e é por isso que eu tento fb://page/. Funciona bem com a versão atual do Facebook (126.0.0.21.77, 1º de junho de 2017). A captura pode ser inútil, deixei-a por precaução.

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

}
Aqui está a função appInstalledOrNot que eu tirei (e modifiquei) da resposta de Aerrow para Este post
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;
}
Como obter a identificação de uma página no Facebook:
  1. vai para a tua Página
  2. clique com o botão direito e View Page Source
  3. encontra na página: fb://page/?id=
  4. Aqui está!
 5
Author: Julian Honma, 2018-01-05 13:07:50

Podes usar isto.:

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

atenção: você pode obter o ID do Usuário scoped a partir da permissão" link " API do facebook

 0
Author: Mohammad Sommakia, 2018-05-30 05:18:32

Eu já respondi aqui e está a funcionar para mim, por favor, remeta isto relação https://stackoverflow.com/a/40133225/3636561

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

Por favor, consulte link para obter a parte restante.

 -3
Author: Abdul Rizwan, 2017-05-23 12:34:45