Я разрабатываю приложение для Android, и мне нужны функции устройства Android. Я знаю, что с помощью диспетчера пакетов должен быть доступен метод getSystemAvailableFeatures
. Тем не менее, метод недоступен. Может ли кто-нибудь помочь мне опубликовать какой-то пример или исходный код, связанный с этим.
Как получить функции устройства Android с помощью диспетчера пакетов
Ответ 1
Я использую следующую функцию, чтобы определить, доступна ли функция:
public final static boolean isFeatureAvailable(Context context, String feature) {
final PackageManager packageManager = context.getPackageManager();
final FeatureInfo[] featuresList = packageManager.getSystemAvailableFeatures();
for (FeatureInfo f : featuresList) {
if (f.name != null && f.name.equals(feature)) {
return true;
}
}
return false;
}
Использование (например, из класса Activity):
if (isFeatureAvailable(this, PackageManager.FEATURE_CAMERA)) {
...
}
Ответ 2
Если вам известна функция, которую вы хотите проверить, вам не нужно перечислять все системные функции и проверять то, что вы ищете. Начиная с уровня API 5, вы можете использовать функцию PackageManager.hasSystemFeature() для выполнения той же работы, что и функция isFeatureAvailable(), показанная в предыдущем ответе.
Например...
PackageManager packageManager = this.getPackageManager();
if (packageManager.hasSystemFeature(PackageManager.FEATURE_NFC))
Log.d("TEST", "NFC IS AVAILABLE\n");
else
Log.d("TEST", "NFC IS *NOT* AVAILABLE\n");