4

電話で Facebook アプリケーションを開き、Facebook の優先ページに移動するインテントを開始するにはどうすればよいですか?

私は試した:

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

ええと、「1234567891」に何を書いても、常に私のページに移動しています。他の人ではなく、常に私に。

どうすればこれを行うことができますか?

4

4 に答える 4

11

これを行うための最良かつ簡単な方法を次に示します。コードに従うだけです

public final void Facebook() {
        final String urlFb = "fb://page/"+yourpageid;
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse(urlFb));

        // If Facebook application is installed, use that else 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);
    }
于 2013-06-25T13:38:21.607 に答える
4

私はまったく同じ問題を抱えていて、ユーザーIDを送信しましたが、何らかの理由で、友人のプロファイルではなく、常に私のプロファイルが開きました。

問題は、Facebook UID、またはプリミティブ型を表すオブジェクトStringのを渡すと、インテントが後でそれを読み取ることができないことです。あなたは本当のを渡す必要があります。LonglongLong

したがって、完全なコードは次のとおりです。

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setClassName("com.facebook.katana", "com.facebook.katana.ProfileTabHostActivity");
    Long uid = new Long("123456789");
    intent.putExtra("extra_user_id", uid);
    startActivity(intent);

楽しんで、これが役立つことを願っています:-)

マキシム

于 2012-04-28T16:59:07.867 に答える
1

このコードを試してください:

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)));
    }
于 2015-01-23T07:49:53.340 に答える
0

このソリューションはもう機能しません。Facebook アプリの新しいバージョンでは、この種のインテントはサポートされなくなりました。バグレポートこちら

新しい解決策は、iPhone スキーム メカニズムを使用することです (そうです、Facebook は、Android の暗黙的インテント メカニズムではなく、Android で iPhone メカニズムをサポートすることを決定しました)。

したがって、ユーザー プロファイルを使用して facebook アプリを開くには、次の手順を実行する必要があります。

String facebookScheme = "fb://profile/" + facebookId;
Intent facebookIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(facebookScheme)); 
startActivity(facebookIntent);

他のアクションを探している場合は、利用可能なすべてのアクションについて次のページを使用できます (/これに関する facebook の公式の出版物が見つからなかったので、テストする必要があります)。

于 2012-10-28T09:47:09.323 に答える