Fra Android-appen min vil jeg gjerne åpne en lenke til en Facebook-profil i den offisielle Facebook-appen (hvis appen er installert, selvfølgelig). For iPhone finnes URL-adressen fb://
, men hvis jeg prøver det samme på Android-enheten min, får jeg en ActivityNotFoundException
.
Er det mulig å åpne en Facebook-profil i den offisielle Facebook-appen fra kode?
Dette fungerer på den nyeste versjonen:
Gå til https://graph.facebook.com/
Kopier ID-en din
Bruk denne metoden:
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>"));
}
}
Dette åpner Facebook-appen hvis brukeren har den installert. Ellers åpnes Facebook i nettleseren.
EDIT: siden versjon 11.0.0.11.23 (3002850) støtter ikke Facebook-appen denne måten lenger, det finnes en annen måte, se svaret nedenfor fra Jared Rummler.
dette er den enkleste koden for å gjøre dette
public final void launchFacebook() {
final String urlFb = "fb://page/"+yourpageid;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(urlFb));
// If a Facebook app is installed, use it. Otherwise, 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);
}
Dette har blitt reverse-engineered av Pierre87 på FrAndroid-forumet, men jeg kan ikke finne noe offisielt sted som beskriver det, så det må behandles som udokumentert og kan slutte å fungere når som helst:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClassName("com.facebook.katana", "com.facebook.katana.ProfileTabHostActivity");
intent.putExtra("extra_user_id", "123456789l");
this.startActivity(intent);