Android uygulamasından Facebook sayfası açılsın mı?


157

Android uygulamamdan, resmi Facebook uygulamasında bir Facebook profiline bir bağlantı açmak istiyorum (uygulama yüklüyse elbette). İPhone için, fb://URL şeması var, ancak Android cihazımda aynı şeyi denemek bir atar ActivityNotFoundException.

Resmi Facebook uygulamasında koddan bir Facebook profili açma şansı var mı?


2
Facebook dev forumlarında bir cevabı olmayan bir konu var: forum.developers.facebook.net/viewtopic.php?pid=255227 (bariz bir cevap olmadığını gösterdiğinden buraya ekliyoruz ve belki de orada bir gün cevaplandı ...)
James Moore

Eğer benim cevap görebilirsiniz burada .
Mohammad Sommakia

Yanıtlar:


152

Facebook sürümü 11.0.0.11.23 (3002850) fb://profile/ve fb://page/artık çalışmıyor. Facebook uygulamasını çözdüm ve kullanabileceğinizi buldum fb://facewebmodal/f?href=[YOUR_FACEBOOK_PAGE]. İşte üretimde kullandığım yöntem:

/**
 * <p>Intent to open the official Facebook app. If the Facebook app is not installed then the
 * default web browser will be used.</p>
 *
 * <p>Example usage:</p>
 *
 * {@code newFacebookIntent(ctx.getPackageManager(), "https://www.facebook.com/JRummyApps");}
 *
 * @param pm
 *     The {@link PackageManager}. You can find this class through {@link
 *     Context#getPackageManager()}.
 * @param url
 *     The full URL to the Facebook page or profile.
 * @return An intent that will open the Facebook page/profile.
 */
public static Intent newFacebookIntent(PackageManager pm, String url) {
  Uri uri = Uri.parse(url);
  try {
    ApplicationInfo applicationInfo = pm.getApplicationInfo("com.facebook.katana", 0);
    if (applicationInfo.enabled) {
      // http://stackoverflow.com/a/24547437/1048340
      uri = Uri.parse("fb://facewebmodal/f?href=" + url);
    }
  } catch (PackageManager.NameNotFoundException ignored) {
  }
  return new Intent(Intent.ACTION_VIEW, uri);
}

4
@DjHacktorReborn artık kimlikleri kullanmamalısınız. Sadece normal bağlantıyı kullanın.
Jared Rummler

2
@DjHacktorReborn Sadece kontrol ettim, burada çalışıyorum. Facebook sürümü 13.0.0.13.14
Jared Rummler

1
@AbdulWasae Milyonlarca indirmeli uygulamalarda çalıştı. Daha iyi bir çözümünüz varsa, çalışan bir çözümü indirmemek yerine lütfen gönderin.
Jared Rummler

4
Herkes bunun hala işe yaradığını onaylayabilir mi? (Haziran 2019 itibariyle). Hala alıyorumActivityNotFoundException
nVxx

5
Bu, facebook sayfasını açar, ancak normal fb sayfalarının aksine, Beğen düğmesini, profili ve kapak fotoğraflarını vb. Görmüyoruz. Doğrudan Kişi bilgilerini açar ve sayfadaki tüm yayınları görüntüler.
Neeraj Dwivedi

235

Bu en son sürümde çalışır:

  1. Https://graph.facebook.com/<user_name_here > ( örneğin https://graph.facebook.com/fsintents ) adresine gidin.
  2. Kimliğinizi kopyalayın
  3. Bu yöntemi kullanın:

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

Kullanıcı yüklüyse Facebook uygulaması açılır. Aksi takdirde, Facebook'u tarayıcıda açar.

DÜZENLEME: sürüm 11.0.0.11.23 (3002850) Facebook App artık bu şekilde desteklemediğinden, başka bir yol var, Jared Rummler'den aşağıdaki yanıtı kontrol edin.


1
Bunun için teşekkürler, bana çok yardımcı oldu! Şimdi sadece twitter için yapmanın bir yolu olsaydı
Evan R.

3
İOS'ta bulunan url şemalarının bir listesi için bkz. Wiki.akosma.com/IPhone_URL_Schemes - bazıları Android'de de çalışmalıdır
FrancescoR

7
& işte bu sorunun cevabı; profil yerine "sayfa" kullan - stackoverflow.com/a/15872383/1433187
Khobaib

1
Sadece not Nexus One 2.3.6
Mark

3
DjHacktorReborn haklı, ne fb: // profile / <fpid> ne de fb: // page / <fpid> artık fb v11
sam ile

38

Bu daha kolay değil mi? Örneğin bir onClickListener içinde?

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

PS. Kimliğinizi (büyük sayı) http://graph.facebook.com/[kullanıcıAdı] adresinden alın.


Kabul ediyorum, bu daha iyi çünkü Facebook uygulama paketi adı veya niyet filtreleri hakkında herhangi bir varsayım yapmıyor. Bununla birlikte, aynı uygulamalar için daha kötüdür, çünkü diğer uygulamalar da eşleşen niyet filtreleri belirtebilir. Ne istediğine bağlı. Başka uygulamaların çağrılmadığından emin olmak için intent.setPackageName ("com.facebook.katana") yazabilirsiniz.
Mark

Ancak tarayıcıyı açar ve Facebook verileri gösterilir, Facebook Uygulaması (Facebook uygulamasını aramak için) nasıl kullanılabilir?
Mikheil Zhghenti

32

Facebook sayfası için:

try {
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/" + pageId));
} catch (Exception e) {
    intent =  new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/" + pageId));
}

Facebook profili için:

try {
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/" + profileId));
} catch (Exception e) {
    intent =  new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/" + profileId));
}

... çünkü cevapların hiçbiri farkı göstermiyor

Her ikisi de Nexus 4'te Facebook v.27.0.0.24.15 ve Android 5.0.1 ile test edildi


merhaba, profil ve sayfa arasındaki farkı nasıl öğrenebilirim?
alvarodoune

1
Profil, bir sayfanın şirketler, yerler, markalar için olduğu özel bir kişi içindir. Bakınız: facebook.com/help/217671661585622 [Başlık: Sayfaların kişisel profillerden farkı nedir?]
Murmel

notlar için: intent = new Intent (Intent.ACTION_VIEW, Uri.parse ("fb: // note /" + facebookNoteId));
voodoo98

1
Herkese açık sayfa, etkinlik, profil için kimliği bulmak için FindMyFbId'yi
Carlos Zerga

Profil Facebook Uygulamasında açılmıyor.
Hammad Nasir

27

İşte 2016'da bunu yapmanın yolu, harika çalışıyor ve çok kolay.

Facebook tarafından gönderilen e-postaların uygulamayı nasıl açtığına baktıktan sonra bunu keşfettim.

// e.g. if your URL is https://www.facebook.com/EXAMPLE_PAGE, you should put EXAMPLE_PAGE at the end of this URL, after the ?
String YourPageURL = "https://www.facebook.com/n/?YOUR_PAGE_NAME";
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(YourPageURL));

startActivity(browserIntent);

1
2016'da bile mükemmel çalışıyor. Belçika'dan Facebook'a göz attığınızda da bir sorun çözer (oturum açılmadığında çerezler devre dışı bırakıldığında).
doubotis

3
Bunu kullandığımda, atıfta bulunduğum Facebook sayfasının başlığı Facebook uygulamasında eksik, örn. Sayfa profili görüntüsü ve Sayfa / Etkinlik / Analiz sekmeleri.
Daniel Persson

Bu, sayfa adınız varsa (belirtildiği gibi), ancak sayısal sayfa kimliğiniz varsa işe yaramaz.
Eric

5
Tamam ama kullanıcı kolayca sayfamın bir gibi yapabilirsiniz temiz bir sayfaya getirmez .... Hala bu arıyor! Herhangi bir çözüm ?
Regis_AG

kimse @Regis_AG için çözüm var mı?
adrianvintu

22

Bunu yapmak için en basit kod bu

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/"+pageid;
            intent.setData(Uri.parse(urlBrowser));
        }

        startActivity(intent);
    }

bu çalışmıyor. " facebook.com/pages/"+pageid " bağlantısını ayarladığımda
BSKANIA

'Sayfaları /' - bölümü -> kullan "facebook.com/" + pageId
Murmel

hala bugün olduğu gibi çalışıyor! çok teşekkür ederim bu bölümü değiştirdim "" facebook.com/pages/"+pageid ; " bununla "" facebook.com/"+pageid ; "
naitbrahim

@naitbrahim Hala çalıştığını bize bildirdiğiniz için teşekkür ederiz! Cevabı düzenledim. btw, cevap 2013 yılında gönderildi :) Mutlu size yardımcı oldu
MBH

15

Daha çok yeniden kullanılabilir bir yaklaşım.

Bu, çoğu uygulamamızda genellikle kullandığımız bir işlevdir. Bu nedenle, bunu başarmak için yeniden kullanılabilir bir kod parçası.

(Gerçekler açısından diğer cevaplara benzer. Sadece basitleştirmek ve uygulamayı yeniden kullanılabilir hale getirmek için buraya göndermek)

"fb://page/FB uygulamasının daha yeni sürümleriyle çalışmaz. Daha fb://facewebmodal/f?href=yeni sürümler için kullanmalısınız . ( Burada başka bir cevapta belirtildiği gibi )

Bu, şu anda uygulamalarımdan birinde bulunan tam teşekküllü bir çalışma kodudur:

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

Bu yöntem, yüklenmişse uygulama için doğru URL'yi veya uygulama yüklü değilse web URL'sini döndürür.

Ardından, aşağıdaki gibi bir amaç başlatın:

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

Tek ihtiyacınız olan bu.


"Android.content.ActivityNotFoundException: Niyeti işlemek için hiçbir etkinlik bulunamadı {act = android.intent.action.VIEW dat = fb: // page / ####}"
Rajbir Shienh

9

Bu, FrAndroid forumunda Pierre87 tarafından tersine mühendislikle oluşturuldu , ancak bunu açıklayan herhangi bir resmi bulamıyorum, bu yüzden herhangi bir anda çalışmayı durdurmak için belgesiz ve yükümlü olarak görülmesi gerekiyor:

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

Evet, çözüm çalışmayı durdurdu. Hata şudur: "java.lang.SecurityException ?: İzin Reddi: Intent {flg = 0x10080000 cmp = com.facebook.katana / .ProfileTabHostActivity? (Ekstralar var)} 'ı ProcessRecord? Etkinlik ProfiliTabHostActivity'nin AndroidManifest'te android: dışa aktarılan bayrağı yok, bu nedenle varsayılan olarak android: exported = "false" bu etkinlik için. Sonuç olarak ProfileTabHostActivity diğer uygulamalar tarafından başlatılamaz. FB geliştiricilerinin bu sorunu FB uygulamasının özellik sürümlerinde çözmesi için tek umut.
dvpublic

düzeltme bu "yanlışlıkla API" kapatmak olduğunu düşünüyorum.
Vaiden

7

bu kodu deneyin:

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

7

Bunu yapmak için "Facebook sayfa kimliği" ne ihtiyacımız var, alabilirsiniz:

  • sayfadan "Hakkında" ya gidin.
  • "Daha Fazla Bilgi" bölümüne gidin.

de la imagen aquí hakkında daha fazlası

Facebook uygulamasını belirtilen profil sayfasında açmak için,

Bunu yapabilirsiniz:

 String facebookId = "fb://page/<Facebook Page ID>";
  startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(facebookId)));

Veya facebook uygulaması yüklü olmadığında doğrulama yapabilir, ardından facebook web sayfasını açabilirsiniz.

String facebookId = "fb://page/<Facebook Page ID>";
String urlPage = "http://www.facebook.com/mypage";

     try {
          startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(facebookId )));
        } catch (Exception e) {
         Log.e(TAG, "Application not intalled.");
         //Open url web page.
         startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
        }

Bunu Page IDyaklaşık sekmesinden görmedim . Özel mi?
RoCk RoCk

5

Çok fazla testten sonra en etkili çözümlerden birini buldum:

private void openFacebookApp() {
    String facebookUrl = "www.facebook.com/XXXXXXXXXX";
    String facebookID = "XXXXXXXXX";

    try {
        int versionCode = getActivity().getApplicationContext().getPackageManager().getPackageInfo("com.facebook.katana", 0).versionCode;

        if(!facebookID.isEmpty()) {
            // open the Facebook app using facebookID (fb://profile/facebookID or fb://page/facebookID)
            Uri uri = Uri.parse("fb://page/" + facebookID);
            startActivity(new Intent(Intent.ACTION_VIEW, uri));
        } else if (versionCode >= 3002850 && !facebookUrl.isEmpty()) {
            // open Facebook app using facebook url
            Uri uri = Uri.parse("fb://facewebmodal/f?href=" + facebookUrl);
            startActivity(new Intent(Intent.ACTION_VIEW, uri));
        } else {
            // Facebook is not installed. Open the browser
            Uri uri = Uri.parse(facebookUrl);
            startActivity(new Intent(Intent.ACTION_VIEW, uri));
        }
    } catch (PackageManager.NameNotFoundException e) {
        // Facebook is not installed. Open the browser
        Uri uri = Uri.parse(facebookUrl);
        startActivity(new Intent(Intent.ACTION_VIEW, uri));
    }
}

4

Cevabım, joaomgcd'nin yaygın olarak kabul edilen cevabının üstüne kuruludur. Kullanıcı Facebook yüklediyse ancak devre dışı bıraktıysa (örneğin, Uygulama Karantinası kullanarak), bu yöntem çalışmaz. Twitter uygulamasının amacı seçilecek, ancak devre dışı bırakıldığı için işleyemeyecek.

Onun yerine:

context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
return new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/620681997952698"));

Ne yapacağınıza karar vermek için aşağıdakileri kullanabilirsiniz:

PackageInfo info = context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
if(info.applicationInfo.enabled)
    return new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/620681997952698"));
else
    return new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/620681997952698"));

4

Bulduğum en iyi cevap, harika çalışıyor.

Tarayıcıda Facebook'ta sayfanıza gidin, sağ tıklayın ve "Kaynak kodunu görüntüle" yi tıklayın, ardından özelliği bulun page_id: page_idson satırdan sonra bu satırda kullanmanız gerekir :

fb://page/pageID

Örneğin:

Intent facebookAppIntent;
try {
    facebookAppIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/1883727135173361"));
    startActivity(facebookAppIntent);
} catch (ActivityNotFoundException e) {
    facebookAppIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://facebook.com/CryOut-RadioTv-1883727135173361"));
    startActivity(facebookAppIntent);
}

Bu yalnızca statik uygulamalar için anlamlıdır.
Irshu

4

Mart 2020 itibariyle bu mükemmel bir şekilde çalışıyor.

private void openFacebookPage(String pageId) {
    String pageUrl = "https://www.facebook.com/" + pageId;

    try {
        ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo("com.facebook.katana", 0);

        if (applicationInfo.enabled) {
            int versionCode = getPackageManager().getPackageInfo("com.facebook.katana", 0).versionCode;
            String url;

            if (versionCode >= 3002850) {
                url = "fb://facewebmodal/f?href=" + pageUrl;
            } else {
                url = "fb://page/" + pageId;
            }

            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
        } else {
            throw new Exception("Facebook is disabled");
        }
    } catch (Exception e) {
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(pageUrl)));
    }
}

2
Intent intent = null;
    try {
        getPackageManager().getPackageInfo("com.facebook.katana", 0);
        String url = "https://www.facebook.com/"+idFacebook;
        intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://facewebmodal/f?href="+url));
    } catch (Exception e) {
        // no Facebook app, revert to browser
        String url = "https://facebook.com/"+idFacebook;
        intent = new Intent(Intent.ACTION_VIEW);
        intent .setData(Uri.parse(url));
    }
    this.startActivity(intent);

2

İtibariyle Temmuz 2018 bununla veya tüm cihazlarda Facebook uygulaması olmadan mükemmel çalışıyor.

private void goToFacebook() {
    try {
        String facebookUrl = getFacebookPageURL();
        Intent facebookIntent = new Intent(Intent.ACTION_VIEW);
        facebookIntent.setData(Uri.parse(facebookUrl));
        startActivity(facebookIntent);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private String getFacebookPageURL() {
    String FACEBOOK_URL = "https://www.facebook.com/Yourpage-1548219792xxxxxx/";
    String facebookurl = null;

    try {
        PackageManager packageManager = getPackageManager();

        if (packageManager != null) {
            Intent activated = packageManager.getLaunchIntentForPackage("com.facebook.katana");

            if (activated != null) {
                int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode;

                if (versionCode >= 3002850) {
                    facebookurl = "fb://page/1548219792xxxxxx";
                }
            } else {
                facebookurl = FACEBOOK_URL;
            }
        } else {
            facebookurl = FACEBOOK_URL;
        }
    } catch (Exception e) {
        facebookurl = FACEBOOK_URL;
    }
    return facebookurl;
}

FB Lite uygulaması ayrı bir paket adına sahiptir, eğer bu şekilde kullanırsanız, com.facebook.lite'ı da kontrol etmelisiniz - Lite'ın bu URL'yi
işleyip

@androidguy FB Lite'ım yok. Kodun onunla çalışıp çalışmadığını bilmek iyi olur. Bir şekilde test edebilir ve bulgularınızı buraya koyabilirseniz, bu hala buraya gelen diğerlerine yardımcı olur. Takdir, teşekkürler
Immy

@Immy -> URL'nizdeki Sayfa-1548219792xxxxxx sayfa kimliği veya sayfa URL'sidir. Yani ex için: facebook.com/PageName benim sayfa url ve id 2345676 gibi bir şeydir. Yani kodda bahsedilecek URL facebook.com/PageName veya başka bir şey olacak?
Neeraj Dwivedi

@NeerajDwivedi İkisine de ihtiyacınız var: URL'de sayfa adınız ve sayfa kimliğiniz. Bunun gibi bir şey: 'String FACEBOOK_URL = " facebook.com/BeanRoaster-1548219792112345/" ;'
Immy

@Immy " facebook.com/myPageName-myPageID " yerine FACEBOOK_URL yerine tam olarak aynı kodu kullandım ve üstte Arama çubuğu ile boş bir sayfa alıyorum. Android 9'da en son Facebook uygulamasını kullanıyorum (Fb uygulama sürümü - 237.0.0.44.120)
Neeraj

1

Facebook sayfasını facebook uygulamasına açmak için bir yöntem oluşturdum, uygulama yoksa chrome'da açılır

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

Utils.class bu yöntemi ekle

public static String getFacebookUrl(FragmentActivity activity, String facebook_url) {
    if (activity == null || activity.isFinishing()) return null;

    PackageManager packageManager = activity.getPackageManager();
    try {
        int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode;
        if (versionCode >= 3002850) { //newer versions of fb app
            Log.d("facebook api", "new");
            return "fb://facewebmodal/f?href=" + facebook_url;
        } else { //older versions of fb app
            Log.d("facebook api", "old");
            return "fb://page/" + splitUrl(activity, facebook_url);
        }
    } catch (PackageManager.NameNotFoundException e) {
        Log.d("facebook api", "exception");
        return facebook_url; //normal web url
    }
}

ve bu

 /***
 * this method used to get the facebook profile name only , this method split domain into two part index 0 contains https://www.facebook.com and index 1 contains after / part
 * @param context contain context
 * @param url contains facebook url like https://www.facebook.com/kfc
 * @return if it successfully split then return "kfc"
 *
 * if exception in splitting then return "https://www.facebook.com/kfc"
 *
 */
 public static String splitUrl(Context context, String url) {
    if (context == null) return null;
    Log.d("Split string: ", url + " ");
    try {
        String splittedUrl[] = url.split(".com/");
        Log.d("Split string: ", splittedUrl[1] + " ");
        return splittedUrl.length == 2 ? splittedUrl[1] : url;
    } catch (Exception ex) {
        return url;
    }
}

3
En son sürümde, bu aslında ana sayfaya gitmek için beni yaklaşık sayfaya götürüyor. Herhangi bir ipucu ?
Balaji Katika

Çözümü buldunuz mu ??
Aman Verma

1

Uygulamanızdan facebook sayfası başlatmak için, urlString = "fb: // page / your_fb_page_id"

Facebook messenger'ı başlatmak için urlString = "fb-messenger: // user / your_fb_page_id"

FB sayfa kimliği genellikle sayısaldır. Bunu elde etmek için, www.facebook.com/edgedevstudio gibi bir şey olan profil kimliğinizi girdikten sonra FB Numaramı Bul seçeneğine gidin ve "Numara Kimliği Bul" u tıklayın.

Voila, şimdi fb sayısal kimliğiniz var. "your_fb_page_id" ifadesini oluşturulan Sayısal Kimlik ile değiştirin

 val intent = Intent(Intent.ACTION_VIEW, Uri.parse(urlString))
 if (intent.resolveActivity(packageManager) != null) //check if app is available to handle the implicit intent
 startActivity(intent)

1

Sabitleri beyan et

  private String FACEBOOK_URL="https://www.facebook.com/approids";
    private String FACEBOOK_PAGE_ID="approids";

Beyan Yöntemi

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)) {
                    Log.d("main","fb first url");
                    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ğrı İşlevi

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

0

Bunu Ekim 2018'de yanıtlıyoruz. Çalışma kodu pageID'yi kullanan koddur. Sadece test ettim ve işlevsel.

public static void openUrl(Context ctx, String url){
    Uri uri = Uri.parse(url);
    if (url.contains(("facebook"))){
        try {
            ApplicationInfo applicationInfo = ctx.getPackageManager().getApplicationInfo("com.facebook.katana", 0);
            if (applicationInfo.enabled) {
                uri = Uri.parse("fb://page/<page_id>");
                openURI(ctx, uri);
                return;
            }
        } catch (PackageManager.NameNotFoundException ignored) {
            openURI(ctx, uri);
            return;
        }
    }

0

Bu formda web görünümünde parça içi kullanarak oluşturdum:

 webView.setWebViewClient(new WebViewClient()
{
    public boolean shouldOverrideUrlLoading(WebView viewx, String urlx)
                {
     if(Uri.parse(urlx).getHost().endsWith("facebook.com")) {
                        {
                            goToFacebook();
                        }
                        return false;
                    }
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlx));
                    viewx.getContext().startActivity(intent);
                    return true;
                }

});

ve dışındaCreateView:

 private void goToFacebook() {
        try {
            String facebookUrl = getFacebookPageURL();
            Intent facebookIntent = new Intent(Intent.ACTION_VIEW);
            facebookIntent.setData(Uri.parse(facebookUrl));
            startActivity(facebookIntent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //facebook url load
    private String getFacebookPageURL() {
        String FACEBOOK_URL = "https://www.facebook.com/pg/XXpagenameXX/";
        String facebookurl = null;

        try {
            PackageManager packageManager = getActivity().getPackageManager();

            if (packageManager != null) {
                Intent activated = packageManager.getLaunchIntentForPackage("com.facebook.katana");

                if (activated != null) {
                    int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode;

                    if (versionCode >= 3002850) {
                        facebookurl = "fb://page/XXXXXXpage_id";
                    }
                } else {
                    facebookurl = FACEBOOK_URL;
                }
            } else {
                facebookurl = FACEBOOK_URL;
            }
        } catch (Exception e) {
            facebookurl = FACEBOOK_URL;
        }
        return facebookurl;
    }

0

facebook sdk kullanmadan fb on button click olayını aç

 Intent FBIntent = new Intent(Intent.ACTION_SEND);
    FBIntent.setType("text/plain");
    FBIntent.setPackage("com.facebook.katana");
    FBIntent.putExtra(Intent.EXTRA_TEXT, "The text you wanted to share");
    try {
        context.startActivity(FBIntent);
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(context, "Facebook have not been installed.", Toast.LENGTH_SHORT).show( );
    }

0
fun getOpenFacebookIntent(context: Context, url: String) {
    return try {
        context.packageManager.getPackageInfo("com.facebook.katana", 0)
        context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/$url/")))
    } catch (e: Exception) {
        context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
    }
}

0

1-kimliğinizi almak için resim profilinize gidin ve sağ tıklayın ve kopyala link adresini alın.

        try {
                Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("fb://profile/id"));
                startActivity(intent);
            } catch(Exception e) {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("facebook url")));
            }
        }
    });

-1
try {
       String[] parts = url.split("//www.facebook.com/profile.php?id=");
       getPackageManager().getPackageInfo("com.facebook.katana", 0);
       startActivity(new Intent (Intent.ACTION_VIEW, Uri.parse(String.format("fb://page/%s", parts[1].trim()))));
    } catch (Exception e) {
       startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
    }

-2

Facebook uygulamasını aşağıdaki düğmeyi tıklayarak açabilirsiniz: -

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    this.findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            startNewActivity("com.facebook.katana");
        }
    });

}

public void startNewActivity( String packageName)
{
    Intent intent = MainActivity.this.getPackageManager().getLaunchIntentForPackage(packageName);
    if (intent != null)
    {
        // we found the activity
        // now start the activity
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }
    else
    {
        // bring user to the market
        // or let them choose an app?
        intent = new Intent(Intent.ACTION_VIEW);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setData(Uri.parse("market://details?id="+packageName));
        startActivity(intent);
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.