ユーザーがfacebookアプリをインストールせずに公開しようとするとキャッチできるようにアプリを変更しています(SSOに必要)。私が使用しているコードは次のとおりです。
try{
ApplicationInfo info = getPackageManager().
getApplicationInfo("com.facebook.Android", 0 );
return true;
} catch( PackageManager.NameNotFoundException e ){
return false;
}
問題は、常にエラーをキャッチしていることです。質問 here によると、適切な許可を要求する必要がありますが、要求する必要がある許可がわかりません。
私の問題は許可か何かですか?
com.facebook.Android
は、Facebook SDKのパッケージ名です。 Facebookアプリのパッケージはcom.facebook.katana
。
アプリが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;
}
あなたの場合、これらのパッケージのいずれかを使用してください。
boolean hasPackage = isPackageInstalled(MainActivity.this, "com.facebook.katana");
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;
}
}
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);
}
楽しむ
ベストアプローチは、com.facebookを含むパッケージ名を選択することですが、とにかく次のパッケージを使用できます。
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);
このコードは私のために働いた