it-swarm.com.de

Öffnen Sie die Facebook-Seite in der Facebook-App (falls installiert) auf Android

Ich möchte meine Facebook-Seite über meine Android-App öffnen, falls die Facebook-App verfügbar ist. Wenn nicht: Diese Seite sollte im Standardbrowser geöffnet sein.

dazu habe ich folgenden Code ausprobiert:

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

Problem ist: Ich habe hier ein Android-Gerät mit der neuesten Version von Facebook . Wenn ich die Facebook-Seite von meiner App öffnen möchte, wird die Facebook-App geöffnet, jedoch ohne meine Seite.

Ich sehe nur die Nachricht:

Probleme beim Laden der Zeitleiste.

Was ist falsch?

24
SpecialFighter

"fb://page/ funktioniert nicht mit neueren Versionen der FB-App. Sie sollten fb://facewebmodal/f?href= für neuere Versionen verwenden.

Dies ist ein vollständiger Arbeitscode, der derzeit in einer meiner Apps aktiv ist:

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

Diese Methode gibt die richtige URL für die App zurück, falls installiert, oder die Web-URL, wenn die App nicht installiert ist.

Dann starten Sie eine Absicht wie folgt:

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

Das ist alles was du brauchst.

Okay, ich habe @AndroidMechanics Code geändert, da auf Geräten, bei denen Facebook deaktiviert ist, die App abstürzt!

hier ist die modifizierte 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; 
        }
    }

Die einzige hinzugefügte Sache ist zu sehen, ob die App deaktiviert ist oder nicht, wenn die App deaktiviert ist, ruft die App den Webbrowser auf!

10
Seref

Das funktioniert mit der neuesten Version:

Gehen Sie beispielsweise zu https://graph.facebook.com/ ( https://graph.facebook.com/fsintents ).

Kopieren Sie Ihre ID Verwenden Sie diese Methode:

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

Hier ist eine Lösung, die den Code mit Jared Rummler und AndroidMechanic mischt. 

Hinweis:fb://facewebmodal/f?href= leitet auf eine seltsame Facebook-Seite weiter, die keine ähnlichen und anderen wichtigen Schaltflächen enthält. Deshalb versuche ich fb://page/. Es funktioniert gut mit der aktuellen Facebook-Version (126.0.0.21.77, 1. Juni 2017). Der Fang könnte nutzlos sein, ich habe ihn nur für den Fall gelassen.

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

}

Hier ist die appInstalledOrNot-Funktion, die ich von Aerrows Antwort auf diesen Beitrag (und modifiziert) genommen habe.

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

So erhalten Sie die Facebook-ID einer Seite:

  1. Gehen Sie zu Ihrer Seite
  2. Rechtsklick und View Page Source
  3. Auf Seite finden: fb://page/?id=
  4. Bitte schön!
6
Julian Honma

Sie können dies verwenden:

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

attention: Sie können die Benutzer-ID des Bereichs über die Berechtigung " link " erhalten

0