Android ऐप से फेसबुक पेज खोलें?


157

अपने एंड्रॉइड ऐप से, मैं आधिकारिक फेसबुक ऐप (यदि ऐप इंस्टॉल किया गया है, तो निश्चित रूप से) में एक फेसबुक प्रोफाइल का लिंक खोलना चाहूंगा। IPhone के लिए, fb://URL स्कीम मौजूद है , लेकिन मेरे एंड्रॉइड डिवाइस पर एक ही चीज की कोशिश करना एक फेंकता है ActivityNotFoundException

क्या कोड से आधिकारिक फेसबुक ऐप में फेसबुक प्रोफाइल खोलने का मौका है?


2
एक ऐसा धागा है जिसका फेसबुक देव मंचों पर कोई जवाब नहीं है: forum.developers.facebook.net/viewtopic.php?pid=255227 (इसे यहां जोड़ना क्योंकि यह दिखाता है कि यह कोई स्पष्ट जवाब नहीं है, और शायद यह मिल जाएगा किसी दिन जवाब दिया ...)
जेम्स मूर

आप यहाँ से मेरा उत्तर देख सकते हैं ।
मोहम्मद सोमाकिया

जवाबों:


152

फेसबुक संस्करण में 11.0.0.11.23 (3002850) fb://profile/और fb://page/अब काम नहीं करता है। मैंने फेसबुक ऐप को डिकम्पोज किया और पाया कि आप इसका उपयोग कर सकते हैं fb://facewebmodal/f?href=[YOUR_FACEBOOK_PAGE]। यहाँ वह विधि है जिसका उपयोग मैं उत्पादन में कर रहा हूँ:

/**
 * <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 आपको अब आईडी का उपयोग नहीं करना चाहिए। बस सामान्य लिंक का उपयोग करें।
जेरेड रुम्मलर

2
@DjHacktorReborn बस जाँच की, यहाँ काम कर रहा है। फेसबुक संस्करण 13.0.0.13.14 पर
जेरेड रुम्मलर

1
@AbdulWasae इसने लाखों डाउनलोड वाले ऐप्स में काम किया है। यदि आपके पास एक बेहतर समाधान है, तो कृपया कार्यशील समाधान को डाउनवोट करने के बजाय इसे पोस्ट करें।
जेरेड रुम्मलर

4
किसी को भी पुष्टि कर सकते हैं, कि यह अभी भी काम करता है? (जून 2019 तक) मुझे अभी भी मिल रहा हैActivityNotFoundException
nVxx

5
यह फेसबुक पेज खोलता है लेकिन नियमित fb पेजों के विपरीत, हम लाइक बटन, प्रोफाइल और कवर फोटो आदि नहीं देखते हैं, यह सीधे संपर्क जानकारी को खोलता है और पेज से सभी पोस्ट प्रदर्शित करता है।
नीरज द्विवेदी

235

यह नवीनतम संस्करण पर काम करता है:

  1. पर जाएं https://graph.facebook.com/<user_name_here > ( https://graph.facebook.com/fsintentsउदाहरण के ) पर जाएं
  2. अपनी आईडी कॉपी करें
  3. इस विधि का उपयोग करें:

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

यदि उपयोगकर्ता ने इसे स्थापित किया है तो यह फेसबुक ऐप खोलेगा। अन्यथा, यह ब्राउज़र में फेसबुक खोलेगा।

संपादित करें: संस्करण 11.0.0.11.23 (3002850) के बाद से फेसबुक ऐप इस तरह से समर्थन नहीं करता है, इसका एक और तरीका है, जेरेड रुम्मलर से नीचे की प्रतिक्रिया की जांच करें।


1
इसके लिए धन्यवाद, मेरी बहुत मदद की! अब अगर केवल ट्विटर के लिए ऐसा करने का कोई तरीका था
इवान आर।

3
IOS पर उपलब्ध url योजनाओं की सूची के लिए wiki.akosma.com/IPhone_URL_Schemes देखें - उनमें से कुछ को Android पर भी काम करना चाहिए
FrancescoR

7
और यहाँ उस मुद्दे का जवाब है; प्रोफ़ाइल के बजाय "पेज" का उपयोग करें - stackoverflow.com/a/15872383/1433187
खोइब

1
बस ध्यान दें कि fb: // प्रोफ़ाइल / फेसबुक ऐप v1.3.2 पर समर्थित नहीं है, जो स्टॉक नेक्सस वन 2.3.6 में शामिल है
मार्क

3
DjHacktorReborn सही है, न तो fb: // प्रोफ़ाइल / <fpid> और न ही fb: // पृष्ठ / <fpid> अब काम कर रहा है fb v11 शुरू
sam

38

क्या यह आसान नहीं है? उदाहरण के लिए एक onClickListener के भीतर?

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

पुनश्च। Http://graph.facebook.com/ IsuserName] से अपनी आईडी (बड़ी संख्या) प्राप्त करें


मैं सहमत हूं, यह बेहतर है क्योंकि यह फेसबुक ऐप पैकेज नाम या इरादे फिल्टर के बारे में कोई धारणा नहीं बनाता है। हालांकि, यह उसी कारण से बदतर है क्योंकि अन्य एप्लिकेशन भी मेल खाने वाले इरादों को निर्दिष्ट कर सकते हैं। यह निर्भर करता है कि आप क्या चाहते हैं। हो सकता है कि आपको कोई अन्य ऐप कहा जाता हो, यह सुनिश्चित करने के लिए आप आशय जोड़ें ।setPackageName ("com.facebook.katana")।
मार्क

लेकिन यह ब्राउज़र को खोलता है और वहां फेसबुक डेटा दिखाया गया है, फेसबुक ऐप (फेसबुक ऐप को कॉल करने के लिए) का उपयोग कैसे संभव है?
मिखाइल ज़ेंगेंती

32

फेसबुक पेज के लिए:

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

फेसबुक प्रोफाइल के लिए:

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

... क्योंकि कोई भी उत्तर अंतर नहीं बताता है

दोनों ने Nexus 4 पर फेसबुक v.27.0.0.24.15 और Android 5.0.1 के साथ परीक्षण किया


नमस्ते, प्रोफ़ाइल और पृष्ठ के बीच अंतर कैसे पता करें?
अल्वारोडोउने

1
प्रोफ़ाइल एक निजी व्यक्ति के लिए है, जहां एक पृष्ठ कंपनियों, स्थानों, ब्रांडों के लिए है। देखें: facebook.com/help/217671661585622 [शीर्षक: व्यक्तिगत प्रोफाइल से पेज कैसे अलग हैं?]
मरमेल

नोट के लिए: अभिप्राय = नया इरादा (Intent.ACTION_VIEW, Uri.parse ("fb: // note /" + facebookNoteId));
voodoo98

1
सार्वजनिक पृष्ठ, ईवेंट, प्रोफ़ाइल के लिए आईडी खोजने के लिए आप FindMyFbId
कार्लोस ज़ेरगा

फेसबुक ऐप में प्रोफाइल नहीं खुल रही है।
हम्मीर नासिर

27

यहां 2016 में इसे करने का तरीका है, शानदार काम करता है, और बहुत आसान है।

मुझे यह पता चला कि फेसबुक द्वारा भेजे गए ईमेल ने ऐप को कैसे खोला।

// 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 में भी। एक समस्या यह भी है जब आप बेल्जियम से फेसबुक ब्राउज़ करते हैं (जब लॉग ऑन नहीं किया जाता है तो कुकीज़ अक्षम हो जाती हैं)।
डबलोटिस

3
जब मैं इसका उपयोग करता हूं, तो मैं जिस फेसबुक पेज का संदर्भ ले रहा हूं उसका हेडर फेसबुक ऐप में गायब है, जैसे पेज प्रोफाइल इमेज और पेज / एक्टिविटी / इनसाइट्स टैब।
डैनियल पर्सन

यह तब काम करता है जब आपके पास पृष्ठ का नाम (जैसा कहा गया हो) हो, लेकिन यदि आपके पास संख्यात्मक पृष्ठ आईडी नहीं है।
एरिक बी।

5
ठीक है, लेकिन मुझे एक साफ पृष्ठ पर नहीं लाता जहाँ उपयोगकर्ता मेरे पृष्ठ को आसानी से बना सके .... फिर भी यह खोज रहा है! कोई भी समाधान ?
Regis_AG

किसी को भी @Regis_AG के लिए समाधान करना है?
एड्रियनविंटू

22

ऐसा करने के लिए यह सबसे सरल कोड है

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

ये काम नहीं कर रहा है। जब मैं लिंक " facebook.com/pages/"+pageid " पर सेट कर रहा हूं
BSKANIA

'पेज /' - भाग -> का प्रयोग करें "facebook.com/" + pageId
Murmel

आज भी काम कर रहा है! बहुत बहुत धन्यवाद मैंने इस भाग को बदल दिया "" facebook.com/pages/"+pageid ? " इस एक के साथ "" facebook.com/"+pageid ? "
naitbrahim

@naitbrahim हमें यह बताने के लिए धन्यवाद कि यह अभी भी काम कर रहा है! मैंने उत्तर संपादित किया है। btw, उत्तर 2013 में पोस्ट किया गया था :) हैप्पी ने आपकी मदद की
एमबीएच

15

अधिक पुन: प्रयोज्य दृष्टिकोण।

यह एक ऐसी कार्यक्षमता है जिसका उपयोग हम आमतौर पर अपने अधिकांश ऐप में करते हैं। इसलिए यहाँ इसे प्राप्त करने के लिए एक पुन: प्रयोज्य कोड है।

(तथ्यों के संदर्भ में अन्य उत्तरों के समान। इसे लागू करने को सरल बनाने और कार्यान्वयन को पुन: प्रयोज्य बनाने के लिए यहां पोस्ट किया गया है)

"fb://page/एफबी ऐप के नए संस्करणों के साथ काम नहीं करता है। आपको fb://facewebmodal/f?href=नए संस्करणों के लिए उपयोग करना चाहिए । ( जैसा कि यहां एक अन्य उत्तर में बताया गया है )

यह एक पूर्ण रूप से काम करने वाला कोड है जो वर्तमान में मेरे एक ऐप में रहता है:

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

यह विधि ऐप के लिए सही url वापस लौटाएगी यदि इंस्टॉल या वेब url अगर ऐप इंस्टॉल नहीं है।

फिर निम्नानुसार एक इरादे शुरू करें:

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

बस इतना ही चाहिए।


यह "android.content.ActivityNotFoundException: फेंक दिया गया है। इंटेंट {अधिनियम = android.intent.action.VIEW dat = fb: // पेज / ####}" को संभालने के लिए कोई गतिविधि नहीं मिली
राजबीर शायना

9

यह FrAndroid फ़ोरम पर पियरे87 द्वारा रिवर्स-इंजीनियर किया गया है , लेकिन मैं कहीं भी आधिकारिक रूप से इसका वर्णन नहीं कर सकता, इसलिए इसे किसी भी क्षण काम करने से रोकने के लिए अनिर्दिष्ट और उत्तरदायी माना जाना चाहिए:

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

हां, समाधान ने काम करना बंद कर दिया है। त्रुटि यह है: "java.lang.SecurityException? अनुमति पत्र: शुरू करने का इरादा {flg = 0x10080000 cmp = com.facebook.katana / .ProfileTabHostActivity (है अतिरिक्त)} ProcessRecord से?"। गतिविधि प्रोफाइलटॉबस्टैक्टिविटी में कोई एंड्रॉइड नहीं है: AndroidManifest में ध्वज निर्यात किया गया है, इसलिए डिफ़ॉल्ट रूप से Android: इस गतिविधि के लिए निर्यात = "गलत"। परिणामस्वरूप ProfileTabHostActivity को अन्य एप्लिकेशन द्वारा लॉन्च नहीं किया जा सकता है। एकमात्र उम्मीद है कि एफबी डेवलपर्स एफबी एप्लिकेशन के फीचर संस्करणों में इस समस्या को ठीक कर देंगे।
डीवीपी रिपब्लिक

मुझे लगता है कि इस "आकस्मिक एपीआई" को बंद करना तय था।
वैदिक

7

इस कोड को आज़माएं:

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

ऐसा करने के लिए हमें "फेसबुक पेज आईडी" की आवश्यकता है, आप इसे प्राप्त कर सकते हैं:

  • पेज से "अबाउट" पर जाएं।
  • "अधिक जानकारी" अनुभाग पर जाएं।

परिचय के लिए विवरण

निर्दिष्ट प्रोफ़ाइल पृष्ठ पर फेसबुक ऐप खोलने के लिए,

तुम यह केर सकते हो:

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

या फेसबुक ऐप इंस्टॉल नहीं होने पर आप वैरिफाई कर सकते हैं, फिर फेसबुक वेब पेज खोलें।

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

मैंने इसे Page IDटैब के बारे में नहीं देखा । यह निजी है?
RoCk RoCk

5

बहुत परीक्षण के बाद मुझे सबसे प्रभावी समाधानों में से एक मिला है:

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

मेरा उत्तर joaomgcd से व्यापक रूप से स्वीकृत उत्तर के शीर्ष पर बनता है। यदि उपयोगकर्ता के पास फेसबुक स्थापित है लेकिन अक्षम है (उदाहरण के लिए ऐप क्वारंटाइन का उपयोग करके), तो यह विधि काम नहीं करेगी। ट्विटर ऐप के लिए इरादे का चयन किया जाएगा लेकिन यह अक्षम होने पर इसे संसाधित नहीं कर पाएगा।

के बजाय:

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

क्या करना है, यह तय करने के लिए आप निम्नलिखित का उपयोग कर सकते हैं:

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

सबसे अच्छा जवाब मुझे मिला है, यह बहुत अच्छा काम कर रहा है।

बस ब्राउज़र पर फेसबुक पर अपने पेज पर जाएं, राइट क्लिक करें, और "स्रोत कोड देखें" पर क्लिक करें, फिर page_idविशेषता ढूंढें : आपको page_idअंतिम बैक-स्लेश के बाद इस पंक्ति में यहां उपयोग करना होगा :

fb://page/pageID

उदाहरण के लिए:

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

यह केवल स्टैटिक ऐप्स के लिए मायने रखता है।
इरशू

4

के रूप में मार्च 2020 इस पूरी तरह से काम करता है।

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

के रूप में जुलाई 2018 इस के साथ या सभी उपकरणों पर फेसबुक ऐप के बिना पूरी तरह से काम करता है।

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 ऐप का एक अलग पैकेज नाम है, यदि आप इस तरह का उपयोग करते हैं तो आपको com.facebook.lite की भी जांच करनी चाहिए - हालाँकि मैंने यह नहीं जांचा है कि क्या लाइट इन URL को संभालेगा
androidguy

@androidguy मेरे पास एफबी लाइट नहीं है। यह जानना अच्छा होगा कि क्या कोड इसके साथ काम करता है। यदि आप किसी तरह इसका परीक्षण कर सकते हैं और अपने निष्कर्षों को यहां रख सकते हैं, तो इससे दूसरों को मदद मिलेगी जो अभी भी यहां आते हैं। सराहना की, धन्यवाद
इमी

@Immy -> यूआरएल में आपका पेज -1548219792xxxxxx पेज आईडी या पेज यूआरएल है। इसलिए पूर्व के लिए: facebook.com/PageName मेरा पेज url है और आईडी कुछ इस तरह है जैसे 2345676। तो कोड में उल्लेखित URL facebook.com/PageName या कुछ और होगा?
नीरज द्विवेदी

@NeerajDwivedi आपको URL में आपके पृष्ठ का नाम और पृष्ठ ID दोनों चाहिए। कुछ इस तरह: 'स्ट्रिंग FACEBOOK_URL = " facebook.com/BeanRoaster-1548219792112345/" ;'
इम्मी

@Immy मैंने FACEBOOK_URL को " facebook.com/myPageName-myPageID " की जगह ठीक उसी कोड का उपयोग किया है और मुझे शीर्ष पर खोज बार के साथ एक रिक्त पृष्ठ मिल रहा है। मैं एंड्रॉइड 9 पर नवीनतम फेसबुक ऐप का उपयोग कर रहा हूं (एफबी ऐप संस्करण - 237.0.0.44.120)
नीरज द्विवेदी

1

मैंने फेसबुक ऐप में फेसबुक पेज खोलने के लिए एक विधि बनाई है, अगर ऐप मौजूद नहीं है तो क्रोम में खुल रहा है

    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 इन विधियों को जोड़ें

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

और इस

 /***
 * 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
नवीनतम संस्करण में, यह वास्तव में मुझे उस पेज के बारे में बता रहा है, जबकि मैं होम पेज पर जाना चाहता हूं। कोई सुझाव ?
बालाजी कटिका

क्या आपने इसका हल ढूंढ लिया है ??
अमन वर्मा

1

अपने ऐप से फेसबुक पेज लॉन्च करने के लिए , urlString = "fb: // पेज / your_fb_page_id" दें

फेसबुक मैसेंजर लॉन्च करने के लिए urlString = "fb-messenger: // user / your_fb_page_id" को लॉन्च करें

एफबी पेज आईडी आमतौर पर संख्यात्मक होती है। इसे प्राप्त करने के लिए, गोटो फाइंड माई एफबी आईडी को अपने प्रोफाइल यूआरएल, www.facebook.com/edgedevstudio की तरह कुछ तो "फाइंड नंबर आईडी" पर क्लिक करें।

Voila, अब आपके पास आपकी fb सांख्यिक आईडी है। "your_fb_page_id" को जनरेट किए गए न्यूमेरिक आईडी से बदलें

 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

स्थिरांक घोषित करें

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

घोषणा विधि

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

कॉल फ़ंक्शन

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

0

इसका उत्तर अक्टूबर 2018 में दिया गया है। वर्किंग कोड पेजआईडी का उपयोग करने वाला है। मैंने अभी इसका परीक्षण किया है और यह कार्यशील है।

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

मैंने इस रूप में इस विखंडन का उपयोग करके वेबव्यू में लागू किया- oncreate के अंदर:

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

});

और onCreateView के बाहर:

 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

फेसबुक एसडीके का उपयोग किए बिना बटन क्लिक घटना पर खुला एफबी

 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-क्लिक करें और राइट क्लिक करें और कॉपी लिंक एड्रेस लें।

        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

आप बटन क्लिक पर फेसबुक ऐप को निम्न प्रकार से खोल सकते हैं: -

@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);
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.