Определить службы 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;
}