Определить службы Google на устройстве Android

Есть ли способ программно проверить, работает ли на устройстве Android Службы Google? У меня есть приложение, использующее C2DM, и я хочу отключить опции меню, в том числе и это, если на устройстве (например, Kindle Fire и Nook) нет необходимых служб Google.

2 ответа

Решение
public static boolean doesContainGsfPackage(Context context) {
        PackageManager pm = context.getPackageManager();
        List<PackageInfo> list = pm.getInstalledPackages(0);

        for (PackageInfo pi : list) {
            if(pi.packageName.equals(ACCUWX.GSF_PACKAGE)) return true;  // ACCUWX.GSF_PACKAGE = com.google.android.gsf

        }

        return false;
     }

Я не уверен точно, что такое "Сервисы Google", однако в прошлом я обнаружил, что эта функция надежна при тестировании, если сервис запущен. Заменив "some.package.name.MyService" на имя пакета служб Google, вы сможете проверить, работает он или нет.

    private boolean isMyServiceRunning() {
       ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
       for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
           if ("some.package.name.MyService".equals(service.service.getClassName())) {
              return true;
           }
       }
       return false;
    }
Другие вопросы по тегам