Open a facebook page from android app?

前端 未结 4 522
闹比i
闹比i 2020-12-30 16:20

How can I start an intent to open a Facebook application on a phone and navigate to the prefered page in Facebook?

I tried:

Intent intent = new Inten         


        
相关标签:
4条回答
  • 2020-12-30 16:45

    This solution won't work any more. The new version of the facebook app doesn't support anymore those kind of intents. See here the bug report

    The new solution is to use the iPhone scheme mechanism (Yes, facebook decided to support the iPhone mechanism in Android instead of the implicit intent mechanism of Android).

    So in order to open the facebook app with a user profile all you need to do is:

    String facebookScheme = "fb://profile/" + facebookId;
    Intent facebookIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(facebookScheme)); 
    startActivity(facebookIntent);
    

    If you are looking for other actions you can use the following page for all available actions (/you have to test it though, since I didn't find an official publication of facebook about this)

    0 讨论(0)
  • 2020-12-30 16:51

    Here is the best and simple way to do it. Just follow the code

    public final void Facebook() {
            final String urlFb = "fb://page/"+yourpageid;
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(urlFb));
    
            // If Facebook application is installed, use that else launch a browser
            final PackageManager packageManager = getPackageManager();
            List<ResolveInfo> list =
                packageManager.queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);
            if (list.size() == 0) {
                final String urlBrowser = "https://www.facebook.com/pages/"+pageid;
                intent.setData(Uri.parse(urlBrowser));
            }
    
            startActivity(intent);
        }
    
    0 讨论(0)
  • 2020-12-30 16:56

    I had the exactly same problem, sent the user id but for some reason, my profile always opened instead of the friend's profile.

    The problem is that if you pass the String of the Long object that represents the Facebook UID, or even a long primitive type, the intent won't be able to read it later. You need to pass a real Long.

    So the complete code is:

        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setClassName("com.facebook.katana", "com.facebook.katana.ProfileTabHostActivity");
        Long uid = new Long("123456789");
        intent.putExtra("extra_user_id", uid);
        startActivity(intent);
    

    Ok enjoy and hope this helps :-)

    Maxim

    0 讨论(0)
  • 2020-12-30 17:00

    try this code :

    String facebookUrl = "https://www.facebook.com/<id_here>";
        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 {
                Uri uri = Uri.parse("fb://page/<id_here>");
                startActivity(new Intent(Intent.ACTION_VIEW, uri));
            }
        } catch (PackageManager.NameNotFoundException e) {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(facebookUrl)));
        }
    
    0 讨论(0)
提交回复
热议问题