Как узнать, какая версия текущего SDK установлена или указана моим приложением? Я просмотрел файлы классов и манифест, но нет ссылки на версию.
Спасибо заранее.
Как узнать, какая версия текущего SDK установлена или указана моим приложением? Я просмотрел файлы классов и манифест, но нет ссылки на версию.
Спасибо заранее.
У вас есть класс FacebookSdkVersion
с текущей версией: https://github.com/facebook/facebook-android-sdk/blob/master/facebook/src/com/facebook/FacebookSdkVersion.java
final class FacebookSdkVersion {
public static final String BUILD = "3.5.2";
public static final String MIGRATION_BUNDLE = "fbsdk:20130708";
}
Поскольку этот класс не имеет модификатора, и вы не можете получить к нему доступ из своего пакета, используйте отражение. Это вернет вам версию sdk:
private String getFacebookSDKVersion()
{
String sdkVersion = null;
ClassLoader classLoader = getClass().getClassLoader();
Class<?> cls;
try
{
cls = classLoader.loadClass("com.facebook.FacebookSdkVersion");
Field field = cls.getField("BUILD");
sdkVersion = String.valueOf(field.get(null));
}
catch (ClassNotFoundException e)
{
// error
}
catch (NoSuchFieldException e)
{
// error
}
catch (IllegalArgumentException e)
{
// error
}
catch (IllegalAccessException e)
{
// error
}
return sdkVersion;
}
Существует общедоступный API:
import com.facebook.Settings;
Settings.getSdkVersion()
"Получает текущую версию SDK для Android в виде строки."
Я не рекомендую использовать рефлексию для доступа к классу пакетов - они могут изменить это в будущем и сломать ваш код, но этот открытый API следует считать стабильным.
Самый простой способ:
1.- Перейдите в свой AndroidManifest.xml
2. Посмотрите на свой нижний вид навигации, есть две вкладки: текст и объединенный манифест, нажмите на последнюю.
3.- С правой стороны появятся источники манифеста, вот оно: например, у меня есть это: facebook-android-sdk: 4.20.0 manifest.
Я знаю, что он немного стар, но я обыскал это в марте 2017 года, и нет такого легкого ответа, как это.