Po odowla komentarze
Z mojego doświadczenia Samsung, jak również HTC, jest jednym z producentów, którzy modyfikują system operacyjny Android w najbardziej nieprzewidywalny sposób. Dodają nowe funkcje i tryby, takie jak widżety uruchamiania przełączników 4G i "tryb oszczędzania energii". Modyfikują one wymagania dotyczące uprawnień dla udokumentowanych metod SDK, tj. Aby włączyć Bluetooth na urządzeniu Samsung, którego potrzebuje twoja aplikacja i dodatkowe zezwolenie, podczas gdy Android wymaga tylko android.permission.BLUETOOTH_ADMIN
. I jest coś więcej.
Krótko mówiąc, jak zauważył @RaghavSood, "tryb oszczędzania energii" nie jest oficjalną funkcją AOSP i nie ma sposobu na jej wykrycie za pośrednictwem oficjalnego zestawu SDK. Istnieje jednak sposób, w jaki można to obejść. Uważam, że najprawdopodobniej Twoja aplikacja nie działa w trybie oszczędzania energii, ponieważ ten tryb wyłącza GPS. Możesz to potwierdzić, konfigurując tryb oszczędzania energii w ustawieniach, aby wyłączyć wyłączanie GPS (nie można tego wyrazić, przepraszam) - first link from google with steps. Następnie przetestuj aplikację. Czy to działa? Jeśli tak, to zlikwidowałeś problem, a teraz Twoim zadaniem jest poinformowanie użytkownika, że aplikacja nie będzie działać bez GPS. Możesz umieścić kod w swojej aplikacji, aby wykryć, czy usługa GPS jest włączona i wyświetlić okno dialogowe z ostrzeżeniem, jeśli nie jest. Kod w swojej działalności może wyglądać następująco:
LocationManager lm = getSystemService(Context.LOCATION_SERVICE);
if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
//Show a notification prompting user to switch on GPS.
}
Można być jeszcze bardziej skomplikowane i sprawiają, aplikacja wykryje producentem urządzenia, aby pokazać niestandardowy komunikat na wszystkich urządzeniach Samsung.
Co rozumiesz przez "tryb oszczędzania energii"? –
@RaghavSood Na przykład w Galaxy S4. urządzenie ma "tryb oszczędzania energii", który można włączyć i tylko wtedy, gdy jest włączony, mam problem z uzyskaniem lokalizacji GPS z aplikacji internetowej. Jeśli nie tryb oszczędzania energii, czy mogę dowiedzieć się, czy aplikacja ma zezwolenie na lokalizację GPS? – theiOSDude
AFAIK, która nie jest oficjalną funkcją AOSP, więc jest mało prawdopodobne, że publiczny SDK będzie miał metodę jej obserwowania. Samsung mógł dodać interfejs API lub opcję do klas ustawień, ale nie mogę powiedzieć tego na pewno. –