2

ユーザーを私のFacebookページに連れて行くボタンを残しました。公式 Facebook アプリを開くには、次の URL を使用します。

fb://pages/PAGE_ID

http://facebook.com/PAGE_IDの代わりに

その場合、Facebook アプリの代わりに URL を開くブラウザのリストを取得するためです。

ユーザーがFacebookアプリをインストールしている場合に機能します。ただし、ユーザーが Facebook アプリを持っていない場合はクラッシュします。

ユーザーが Facebook アプリを持っているかどうかを確認する方法はありますか?

4

3 に答える 3

5

これはもうチェックしましたか?このように、アプリがインストールされているかどうかをいつでも確認できます。

于 2012-12-27T08:39:28.687 に答える
1

ネイティブ Android アプリでは、これは非常に簡単に実現できます。

Uri dataUri = Uri.parse("fb://....");
Intent receiverIntent = new Intent(Intent.ACTION_VIEW, dataUri);

PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(receiverIntent, 0);

if (activities.size() > 0) {
    startActivity(receiverIntent);
} else {
    Uri webpage = Uri.parse("http://www.facebook.com/...");
    Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);

    packageManager = getPackageManager();
    activities = packageManager.queryIntentActivities(webIntent, 0);

    if (activities.size() > 0) {
        startActivity(webIntent);
    }
}
于 2012-12-27T08:38:15.740 に答える
1

デバイスに twitter アプリがインストールされているかどうかを確認するために書いたこのコードを再利用して、facebook アプリがインストールされているかどうかを確認できると思います。twitterApps リストの場合、値を「com.facebook.katana」に置き換える必要があります。

    public Intent findTwitterClient() {
            final String[] twitterApps = { "com.twitter.android", "com.handmark.tweetcaster", "com.seesmic", "com.thedeck.android", "com.levelup.touiteur", "com.thedeck.android.app" };

            Intent tweetIntent = new Intent(Intent.ACTION_SEND);
            tweetIntent.putExtra(Intent.EXTRA_TEXT, "#hashtagTest");
            tweetIntent.setType("text/plain");
            final PackageManager packageManager = getPackageManager();
            List<ResolveInfo> list = packageManager.queryIntentActivities(tweetIntent, PackageManager.MATCH_DEFAULT_ONLY);

            for (int i = 0; i < twitterApps.length; i++) {
                    for (ResolveInfo resolveInfo : list) {
                            String p = resolveInfo.activityInfo.packageName;
                            if (p != null && p.startsWith(twitterApps[i])) {
                                    tweetIntent.setPackage(p);
                                    return tweetIntent;
                            }
                    }
            }
            return null;
    }
于 2012-12-27T08:40:34.537 に答える