Ответ 1
com.facebook.android - это имя пакета для SDK для Facebook. Приложение Facebook - com.facebook.katana.
Я изменяю свое приложение, чтобы его можно было поймать, если пользователь пытается опубликовать его без установки приложения facebook (требуется для SSO). Вот код, который я использую:
try{
ApplicationInfo info = getPackageManager().
getApplicationInfo("com.facebook.android", 0 );
return true;
} catch( PackageManager.NameNotFoundException e ){
return false;
}
Проблема в том, что она всегда ломает ошибку. В соответствии с вопросом здесь мне нужно запросить соответствующее разрешение, но я не знаю, какие разрешения мне нужно запросить.
Является ли моя проблема разрешением одного или другого?
com.facebook.android - это имя пакета для SDK для Facebook. Приложение Facebook - com.facebook.katana.
Чтобы проверить любое приложение, установленное на Android, или не использовать этот метод:
public static boolean isPackageExisted(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 = isPackageExisted (MainActivity.this, "com.facebook.katana" )
Надеюсь, это поможет вам.
Лучший подход - выбрать имя пакета, включая com.facebook, но в любом случае вы можете использовать следующие пакеты:
Запишите функцию в Утилитах или где угодно для вас. Эта функция поможет вам проверить любое установленное приложение или нет. Скажем, для себя это в Utilities.java
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);
}
Enjoy
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;
}
}
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);
этот код работал у меня