2013-07-01 10 views
6

Piszę aplikację, która wykorzystuje możliwość kpiąca z lokalizacji w Androidzie.Użyj pozornej lokalizacji bez ustawiania jej w ustawieniach

To, co chciałbym osiągnąć, to kpić z mojej lokalizacji bez ustawienia opcji "zezwalaj na pozorowanie lokalizacji" w opcjach programisty.

wiem, że jest to możliwe, ponieważ to prace z tej aplikacji: https://play.google.com/store/apps/details?id=com.lexa.fakegps&hl=en

co starałem:

wygenerować apk, przenieść go do/system/app, zrobić restart
I Próbowałem także z uprawnieniem ACCESS_MOCK_LOCATION w manifeście i bez niego.

Ale to wszystko prowadzi do tego wyjątku:
RuntimeException: Nie można uruchomić Aktywny: SecurityException: Wymaga ACCESS_MOCK_LOCATION zabezpieczyć ustawienie

+0

Nie miałbym nic przeciwko, żebym zapytał: jak to działa z FakeGPS? Zainstalowałem aplikację (ze sklepu), przeniosłem .apk (to się nazywa base.apk) do/system/app, a po ponownym uruchomieniu aplikacja działa. Nie mogę jednak podrobić lokalizacji, gdy "zezwalam na pozorowane lokalizacje" jest wyłączona, a jeśli go włączyć, a następnie podróbka przy użyciu pp, a następnie włączyć "pozoruj lokalizacje" off, podróbka kończy się automatycznie. Umysł dzieląc się tym, co robię źle? – Giladiald

+0

Już nie używam tej aplikacji. Ale możesz znaleźć opis w playstore przydatne: https://play.google.com/store/apps/details?id=com.lexa.fakegps&hl=en – lukassteiner

Odpowiedz

13

Mam dekompilowana com.lexa.fakegps ty wymienione w pytaniu, a co z tym zrobić tak:

private int setMockLocationSettings() { 
    int value = 1; 
    try { 
     value = Settings.Secure.getInt(getContentResolver(), 
       Settings.Secure.ALLOW_MOCK_LOCATION); 
     Settings.Secure.putInt(getContentResolver(), 
       Settings.Secure.ALLOW_MOCK_LOCATION, 1); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return value; 
} 

private void restoreMockLocationSettings(int restore_value) { 
    try { 
     Settings.Secure.putInt(getContentResolver(), 
       Settings.Secure.ALLOW_MOCK_LOCATION, restore_value); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

/* every time you mock location, you should use these code */ 
int value = setMockLocationSettings();//toggle ALLOW_MOCK_LOCATION on 
try { 
    mLocationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, fake_location); 
} catch (SecurityException e) { 
    e.printStackTrace(); 
} finally { 
    restoreMockLocationSettings(value);//toggle ALLOW_MOCK_LOCATION off 
} 

Ponieważ czas realizacji tych kodu jest bardzo krótki, inne aplikacje trudno wykryć zmianę ALLOW_MOCK_LOCATION.

także trzeba,
1. wymaga dostępu root urządzeniu
2. Przesuń aplikację do /system/app lub /system/priv-app

próbowałem go w mój projekt i to działa dobrze.

+0

Czy to działa dla Marshmallow? – Marlon

+0

Nie próbowałem tego kodu w Marshmallow wcześniej, ale działa na Lollipop. @ Marlon – PageNotFound

+1

Tak, to nie działa w marshmallow, Ponieważ google zaktualizował ustawienia fałszywego systemu do selektora aplikacji, nie mogę tego zrobić pracować już. Dekompilowałem com.incorporateapps.fakegps, ponieważ użytkownicy mówią, że może to zrobić w wersji ptasiej. Kod wygląda tak samo powyżej, ale nie działa dla mnie, nie wiem, czego mi brakuje. Czy możesz na to spojrzeć? @PageNotFound – Marlon

2

byłby wymagany jest dostęp do urządzenia głównego, aby to zrobić.

+0

Mam uprawnienia administratora do urządzenia. W przeciwnym razie nie mogłem przenieść apk do/system/app – lukassteiner

2

Spróbuj http://repo.xposed.info/module/com.brandonnalls.mockmocklocations

Niektóre aplikacje nie pozwoli na korzystanie z nich, jeśli „Zezwalaj na pozorowanie lokalizacji” jest włączona , nawet jeśli nie są szyderczy swoją lokalizację. Zapobiega to wykrywaniu przez aplikacje wykrycia, że ​​"Zezwalaj na pozorowanie lokalizacji" jest włączone.

Powiązane problemy