Как скрыть текущий экран, когда приложение становится фоновым в React Native Android - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть приложениеact-native-init, которое использует appState , чтобы определить, когда приложение переходит в фоновый режим, чтобы скрыть экран, который использовал пользователь (например, список электронных писем), и поместитьизображение перед ним, пока пользователь снова не вызовет передний план приложения и не пройдет проверку подлинности.

Это необходимо для того, чтобы любой человек, проверяющий, какие приложения были открыты в текущий момент, не видел последний экран, который проверял пользователь.в моем приложении выглядит так, и вместо этого вижу изображение (как заставку).

Этого легко добиться в iOS, потому что iOS имеет три этапа:

  1. active: когда приложение используется на переднем плане.
  2. неактивно : когда приложение находится в процессе перехода в фоновый режим.
  3. фон : Когда приложение уже находится в фоновом режиме.

Поэтому, когда приложение становится неактивным , флаг в состоянии компонента изменяется, и вместо компонента отображается изображение с изображениемтекущий экранru.

handleAppStateChange = (nextAppState) => {
    if (nextAppState.match(/inactive|background/)) {
      this.setState({ showSplashScreen: true })
    }
    if (this.state.appState.match(/background/) && nextAppState === 'active') {
      this.setState({ showSplashScreen: false })
    }
  }

Тем не менее, Android использует только active и background appStates , поэтому при переходе в фоновый режим функция вызывается с background как nextAppState и флаг showSplashScreen в состоянии изменяется на true, но похоже, что поскольку приложение уже background , компонент не реагирует на изменение состоянияи когда вы проверяете список открытых приложений, вы по-прежнему видите последний использованный экран, экран, который может содержать конфиденциальные данные.

Есть ли способ обнаружить в реагирующем родном Android, когдаприложение будет работать в фоновом режиме, чтобы текущий экран можно было заменить изображением, прежде чем переходить в фоновый режим?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

В Android встроены механизмы предотвращения утечки конфиденциальных данных.Используйте их, НЕ пытайтесь перезаписать изображение - или, по крайней мере, не полагайтесь только на это.

Правильный способ сделать это - установить флаг SECURE в окне, чтобы ОС Androidпозаботится об этом и других возможных проблемах, таких как снимки экранаКод для этого:

getWindow (). SetFlags (WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);

Это можно поместить в onCreate вашей деятельности перед вызовом setContentView.,

0 голосов
/ 28 сентября 2018

Посмотрите на жизненный цикл активности приложений для Android, вы можете проверить следующую ссылку

. Есть три этапа, которые могут помочь вам

onPause: вызываемыйкогда активность невидима для пользователя.

onStop: вызывается, когда активность больше не видна пользователю.

onResume: вызывается, когда активность снова начинает взаимодействовать с пользователем.

enter image description here

...