2012-04-09 22 views
8

Robię zastrzeżoną aplikację dla firmy, która nigdy nie wyda jej na Android Market (lub Play Store chyba teraz) w Ice Cream Sandwich (Android 4.0).Wyłącz przycisk Home w Androidzie ICS (4.0)

Muszę wyłączyć dom, aby użytkownicy nie mogli złośliwie odinstalować oprogramowania lub usunąć danych przechwytywanych przez aplikację. Ta najnowsza wersja jest pierwszą wersją napisaną w wersji 4.0, poprzednie wersje zostały napisane w wersjach 2.2 i 3.2.

W celu wyłączenia przycisku Strona główna w wersji 2.2, powiązałem aplikację jako zamiennik domu, więc przycisk tylko ponownie otworzył aplikację, ale nie mogę już korzystać z tej metody, ponieważ to w pewnym stopniu uniemożliwia nam aktualizację aplikacji . (nie chcemy dać możliwość ponownego wybierania domyślnego domowym użytkownika, jako że doprowadziłoby do usunięcia danych

Kod mam dla disableing przycisk Home w 3.2:

@Override 
public void onAttachedToWindow() { 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
    super.onAttachedToWindow(); 
} 

i, w dniu na razie:

KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); 
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); 
lock.disableKeyguard(); 

Kiedy jednak uruchomię ten sam kod, który działał na moim tablecie 3.2, nie działa on na moim tabletie 4.0.

Zastanawiam się, czy istnieje nowy interfejs API lub metoda, która 4.0 ma to, że osiągnie taki sam efekt jak obecnie w mojej wersji 3.2.

Dzięki za pomoc lub wskazówki.

Adam

+0

Aplikacja zachowuje się jak złośliwe oprogramowanie w tym, że przejmuje kontrolę nad urządzeniem z dala od użytkownika. Android 4.0+ został zaprojektowany, aby temu zapobiec. – Dubs

Odpowiedz

6

Jak o obejście ..

Napisz drugą aplikację, która implementuje ekranu głównego, gdy przycisk jest wciśnięty ekran główny Ta aplikacja przyjdzie na pierwszy plan. Z tej aplikacji musisz przesunąć główną aplikację z powrotem na pierwszy plan. Jedynym haczykiem jest to, że Twoja aplikacja na ekranie głównym nigdy nie musi potrzebować aktualizacji, ale powinieneś być w stanie bez problemu aktualizować główną aplikację bez karty z prośbą o ustawienie home launchera.

Nadzieja, że ​​sens ..

+0

Twoje wyjaśnienie miało sens i działało idealnie. Było tylko niewielkie migotanie z mojej głównej aplikacji do porywacza w domu ... ale tego można się spodziewać po zmianie aplikacji. Po uruchomieniu przeniosłem aplikację hijacking do tyłu, co pomogło zredukować część migotania. – adamacdo

+0

użytkownik może nadal odznaczyć tę aplikację –

+0

Potrzebuję również tego samego rodzaju scenariusza, ale możemy wyjść z aplikacji za pomocą Zaćmienia DDMS, a także długi przycisk główny naciśnij włącza menedżera zadań. czy istnieje sposób na wyłączenie długiego naciśnięcia przycisku home? – DAS

0

No .... nie można przesłonić przycisk home dla Android4.0 conajmniej .. użyciem roztworu „hotveryspicy”, a jeśli chcesz, aby odpowiedzieć na przycisk HOME, zaimplementować ekran główny.

+0

Nie mogę zliczyć aplikacji jako ekranu głównego, ponieważ po aktualizacji aplikacji użytkownik będzie miał możliwość wybrania Startowego zasobu jako programu uruchamiającego, który pozwoli na usunięcie poufnych danych ... co jest najważniejszą rzeczą Muszę tego unikać. – adamacdo