Ich habe versucht, Flag_secure in der OnPause () -Methode einzuschalten und in OnResume () auszuschalten. Dieser Ansatz funktioniert wie zwei Mal von 5, aber gelegentlich blockiert das Flag den Inhalt nicht, wenn die App schnell auf den Hintergrund umgestellt wird. Dies führt dazu, dass der Inhalt der App für einen kurzen Moment im App-Switcher sichtbar ist.
Code: Select all
@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>
Dieser Ansatz blockiert, dass der Bildschirm in vielen Fällen im App -Switcher sichtbar ist, aber inkonsistent ist. Manchmal blockiert es nicht, dass der Bildschirm im App -Switcher angezeigt wird, insbesondere beim schnellen Umschalten zwischen Apps. OnCreate ()
Code: Select all
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
}
< /code>
Verwenden von React Native und App -Status < /strong>: < /li>
< /ol>
Ich habe auch versucht, dies in React Native zu implementieren, indem Sie den App -Status überprüfen und einen leeren Screen -Screen (oder ein Blut -Screen) rendern (oder ein Blut -Screen). Ich habe AppState verwendet, um den App -Lebenszyklus zu verfolgen und auf dem aktuellen Bildschirm eine Ansicht anzuzeigen, wenn sich die App auf den Hintergrund bewegt.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;