web-dev-qa-db-ja.com

Facebookがインストールされているかどうかを確認する方法Android

ユーザーがfacebookアプリをインストールせずに公開しようとするとキャッチできるようにアプリを変更しています(SSOに必要)。私が使用しているコードは次のとおりです。

try{
    ApplicationInfo info = getPackageManager().
            getApplicationInfo("com.facebook.Android", 0 );
    return true;
} catch( PackageManager.NameNotFoundException e ){
    return false;
}

問題は、常にエラーをキャッチしていることです。質問 here によると、適切な許可を要求する必要がありますが、要求する必要がある許可がわかりません。

私の問題は許可か何かですか?

61
easycheese

com.facebook.Androidは、Facebook SDKのパッケージ名です。 Facebookアプリのパッケージはcom.facebook.katana

99
Torid

アプリがAndroidにインストールされているかどうかを確認するには、次の方法を使用します。

public static boolean isPackageInstalled(Context c, String targetPackage) {
    PackageManager pm = c.getPackageManager();
    try {
        PackageInfo info = pm.getPackageInfo(targetPackage, PackageManager.GET_META_DATA);
    } catch (NameNotFoundException e) {
        return false;
    }
    return true;
}

あなたの場合、これらのパッケージのいずれかを使用してください。

  • com.facebook.orca
  • com.facebook.katana
  • com.example.facebook
  • com.facebook.Android
boolean hasPackage = isPackageInstalled(MainActivity.this, "com.facebook.katana");
5
N.Droid
 if (isAppInstalled()) {
        Toast.makeText(getApplicationContext(), "facebook app already installed", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(getApplicationContext(), "facebook app not installing", Toast.LENGTH_SHORT).show();
    }



public boolean isAppInstalled() {
            try {
                getApplicationContext().getPackageManager().getApplicationInfo("com.facebook.katana", 0);
                return true;
            } catch (PackageManager.NameNotFoundException e) {
                return false;
            }
        }
2

Utilitiesまたはあなたに合った任意の場所に関数を記述します。これは、インストールされているアプリの有無を確認するのに役立ちます。

public static boolean isAppInstalled(Context context, String packageName) {
        try {
            context.getPackageManager().getApplicationInfo(packageName, 0);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
            return false;
        }
    }

次に、どこからでもこの関数を呼び出します。たとえば、Facebookアプリをチェックするため

if(Utilities.isAppInstalled(getApplicationContext(), "com.facebook.katana")) {
                    // Do something
                }else {
                    Intent i = new Intent(Android.content.Intent.ACTION_VIEW);
                    i.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.facebook.katana"));
                    startActivity(i);
                }

楽しむ

1
yubaraj poudel

ベストアプローチは、com.facebookを含むパッケージ名を選択することですが、とにかく次のパッケージを使用できます。

  • com.facebook.orca
  • com.facebook.katana
  • com.example.facebook
  • com.facebook.Android
0
Abdul Rahman
Intent i = new Intent(Android.content.Intent.ACTION_VIEW);
i.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.facebook.katana"));
startActivity(i);

このコードは私のために働いた

0
Avinash