2016-01-02 5 views
21

Facebookアプリが利用可能な場合は、AndroidアプリからFacebookページを開きます。そうでない場合は、このページをデフォルトのブラウザで開いてください。このためOpen FacebookページをAndroidで開く

私は、次のコードを試してみました:

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

問題は次のとおりです。 私はここでのFacebookの最新バージョンでAndroidデバイスを持っています。 私のアプリからFacebookページを開くには、Facebookアプリが開きますが、私のページはありません。

トラブルローディングタイムライン:

は私だけのメッセージを参照してください。

どうしたのですか?

答えて

74

"fb://page/ FBアプリの新しいバージョンでは動作しません:

は、この方法は、あなたのID 使用をコピーします。新しいバージョンには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); 

を次のように

次に意図を開始します。

+0

ありがとうございました – SpecialFighter

+0

ソース:http://stackoverflow.com/a/24547437/1048340 –

+0

これは魅力的でした – Adnan

6

これは最新バージョンで動作します:https://graph.facebook.com/

ゴー(例えばhttps://graph.facebook.com/fsintents)。

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

これは私の必要性のための最良の答えです。上記の "fb:// facewebmodal/f?href ="という新しいバージョンの答えは、実際には "ページ"ではなく、エンティティによる投稿のページに移動します。これ以上調べなかった。また、虚栄心のページ名ではなく、ページのIDを使用することが非常に重要です! – ericWasTaken

+0

同意します。これは実際のページを開き、ページの後ろの検索を開きません。ページIDを取得するのに問題がある方は、こちらから入手してください: –

9

私は@AndroidMechanicsコードを変更しました。デバイスではFacebookが無効になっていたため、アプリがクラッシュしました。ここ

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

のみ追加のものは、アプリはウェブブラウザを呼び出します無効になっている場合、アプリが無効であるかどうかを見ることです!

-5

私はすでにここに答えていると、それは私のために働いて、https://stackoverflow.com/a/40133225/3636561

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

この リンクを参照してください。残りの部分を取得するには、リンクを参照してください。

5

コードをJared RummlerAndroidMechanicで混在させたソリューションです。

注:fb://facewebmodal/f?href=は、私はfb://page/を試す理由でのような、その他の重要なボタンを持っていない奇妙なFacebookのページにリダイレクトします。現在のFacebook版(126.0.0.21.77、2017年6月1日)でうまく動作します。キャッチは役に立たないかもしれない、私はそれをちょうど残した。ページのFacebookのIDを取得する方法this post

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

にAerrowの答えから

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

} 

ここで私が撮った(および変更)appInstalledOrNot機能があります:

  1. ゴーあなたのページには、
  2. 右クリックしてView Page Source
  3. Fページ内に表示:fb://page/?id=
  4. ここに行く!
+1

'getFacebookPageURL'でキャッチしようとすると機能がありません – SjoerdvGestel

+0

あなたはそうです、私は参考のためにコメントとして編集しました。 –

関連する問題