Moja aplikacja zawiera poufne informacje o użytkowniku i musimy zaimplementować ekran hasła, który będzie wyświetlany za każdym razem, gdy użytkownik otworzy aplikację. Oto dwa podejścia, które próbowałem po przeczytaniu this post.Wdrożenie blokady kodu dostępu dla aplikacji Android
użyć zmiennej statycznej i przywrócić go w
onStop()
każdej aktywności i sprawdzić je ponownie wonStart()
każdego działania i pokazać ekran hasło jeśli czas przekroczył minimum progu powiedzenia 1-2 sek. Problem z tym podejściem polega na tym, że moja aplikacja używa także intencji do wywoływania skanerów aparatów i kodów kreskowych, a użytkownicy mogą spędzać dłuższe okresy w tych zewnętrznych aplikacjach. Mogę zwiększyć próg w tym przypadku, ale to sprawia, że obliczenia są skomplikowane i nie jest to bardzo dobre rozwiązanie.Próbowałem inne podejście przy użyciu tej metody.
protected boolean isAppOnForeground(final Context context) { List<RunningAppProcessInfo> appProcesses = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getRunningAppProcesses(); if (appProcesses == null) { return false; } final String packageName = context.getPackageName(); for (RunningAppProcessInfo appProcess : appProcesses) { if ((appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) && appProcess.processName.equals(packageName)) { return true; } } return false; }
Ale to zawsze zwróci true, gdy sprawdzam go w metodzie onStart każdej aktywności, ponieważ proces już rozpoczętej przez czasu jest w onStart
Czy istnieją inne podejście Mogę wykonać wyświetlenie hasła, gdy użytkownik otworzy aplikację? Powinien być wyświetlany, nawet gdy użytkownik kliknie na ekranie głównym, aby wyjść z aplikacji, a następnie powraca do aplikacji z ostatnich aplikacji.
nie jestem pewien, ale jeśli możesz zrobić usługę, a każda wypowie 1 lub 2 sekund wywołania isapponforeground, i zmienić zmienną na true/false, aw aktywności po wznowieniu, po prostu sprawdź true/false – Amit
Dla # 1, co o zaszyfrowanym ciągu znaków sesji/typu cookie przechowywanym w * prywatnej * udostępnionej subskrypcji - możesz ustawić limit czasu na kilka minut, co może pozwolić użytkownikom na opuszczenie i powrót do Twojej aplikacji. – pjco
Innym możliwym rozwiązaniem jest administrator urządzenia do korzystania z blokady urządzenia zamiast niestandardowej blokady aplikacji. może być lepiej lub gorzej w zależności od tego, jak na to patrzysz. jeśli masz wiele aplikacji wymagających zabezpieczeń, jest to pojedyncza blokada dla wszystkich aplikacji. jeśli masz tylko jedną aplikację, użytkownicy są zirytowani, ponieważ Twoja aplikacja wymusza na nich blokadę ekranu. –