[*] Я попытался включить флаг_SECURE в методе OnPause () и выключите его в onResume () . Этот подход работает как 2 раза из 5, но иногда флаг не блокирует контент, когда приложение быстро переключается на фон. Это приводит к тому, что содержание приложения будет видимо в коммутаторе приложения на короткий момент.
Код: Выделить всё
@Override
protected void onPause() {
super.onPause();
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
}
@Override
protected void onResume() {
super.onResume();
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
< /code>
Этот подход блокирует экран от виденного во многих случаях в переключателе приложения, но является непоследовательным. Иногда он не может заблокировать экран с отображения в коммутаторе приложения, особенно при быстрое переключение между приложениями.
[list]
[b] Настройка flag_secure [/list]
Isecure также Code> Isecure. oncreate () , который эффективно блокирует контент от видимости в коммутаторе приложения. Тем не менее, этот подход также полностью блокирует скриншоты и записи экрана, что недопустимо для моего варианта использования. Я хочу, чтобы пользователь по-прежнему мог сделать снимки экрана или записать экран, когда приложение находится на переднем плане.
Код: Выделить всё
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
}
< /code>
Использование Native и App State < /strong>: < /li>
< /ol>
Я также пытался реализовать это в React Native, проверяя состояние приложения и отображая пустой экран (или экран Blur), когда приложение идет на фотур. Я использовал AppState для отслеживания жизненного цикла приложения и показать представление поверх текущего экрана, когда приложение перемещается на задний план.import React, { useEffect, useState } from 'react';
import { AppState, View, Text, StyleSheet } from 'react-native';
const App = () => {
const [appState, setAppState] = useState(AppState.currentState);
const [isBlurred, setIsBlurred] = useState(false);
useEffect(() => {
const handleAppStateChange = (nextAppState) => {
if (nextAppState === 'background' || nextAppState === 'inactive') {
setIsBlurred(true); // Show blur when app is in background
} else {
setIsBlurred(false); // Remove blur when app returns to foreground
}
};
const subscription = AppState.addEventListener('change', handleAppStateChange);
return () => subscription.remove();
}, []);
return (
{/* Main app content */}
Your App Content
{/* Conditional Blur View */}
{isBlurred && (
App in Background
)}
);
};
export default App;
Вопрос:
есть надежный способ блокировки приложения. Пока приложение находится на переднем плане? Я видел, как такие приложения, как WhatsApp, достигают такого поведения, где они блокируют контент в переключателе приложения, но все же разрешают экране и записям на переднем плане, когда пользователи включают функцию блокировки приложения.
Подробнее здесь: https://stackoverflow.com/questions/789 ... screenshot
Мобильная версия