Как получить функции Android-устройства с помощью менеджера пакетов - PullRequest
7 голосов
/ 10 марта 2011

Я занимаюсь разработкой приложения для Android, и мне нужны функции устройства Android. Я знаю, что при использовании менеджера пакетов должен быть доступен метод getSystemAvailableFeatures. Тем не менее, этот метод недоступен. Может ли кто-нибудь помочь мне опубликовать пример или исходный код, связанный с этим.

Ответы [ 2 ]

25 голосов
/ 10 марта 2011

Я использую следующую функцию, чтобы определить, доступна ли функция:

    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)) {
        ...
    }
11 голосов
/ 05 ноября 2012

Если вы знаете, какую функцию вы хотите проверить, вам не нужно перечислять все системные функции и сравнивать с той, которую вы ищете. Начиная с уровня 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");
...