在“最近”屏幕上更改应用程序的预览图像
Posted
技术标签:
【中文标题】在“最近”屏幕上更改应用程序的预览图像【英文标题】:Change the preview image of an app on Recents Screen 【发布时间】:2018-05-16 20:28:52 【问题描述】:我正在制作一个 React Native 应用程序,它有一个安全部分,用户必须在其中输入密码才能解锁受保护的内容。问题是,当用户在锁定该部分之前切换到另一个应用程序时,将生成屏幕截图以及解锁内容并显示在Recents Screen上。
有没有办法将预览替换为其他内容、空白屏幕或自定义屏幕(如 Chrome/Firefox 隐身模式)?
【问题讨论】:
在标准 android 中,您可以使用 useFLAG_SECURE
。我不确定 React Native 的等价物是什么。
同意@CommonsWare,我想没有合适的方法。但是在android中有android:excludeFromRecents
。
这很不幸...感谢您指出本机解决方案的家伙。我为 React Native 找到了一个 FLAG_SECURE native module,稍后会对其进行测试。会很棒if there's an equivalent of FLAG_SECURE on ios。
【参考方案1】:
您可以聆听应用程序在后台运行并在当前屏幕顶部显示白色/空白模式
import AppState from 'react-native'
class App extends React.Component
constructor(props)
super(props)
this.state =
appState: AppState.currentState
componentDidMount()
AppState.addEventListener("change", this._handleAppStateChange);
componentWillUnmount()
AppState.removeEventListener("change", this._handleAppStateChange);
_handleAppStateChange = (newAppState) =>
if(newAppState === 'background' && newAppState !== this.state.appState)
// SHOW EMPTY SCREEN
if(newAppState !== 'background' && this.state.appState === 'background')
// HIDE EMPTY SCREEN
if (newAppState !== this.state.appState)
this.setState( appState: newAppState )
... rest of the app ....
AppState documentation
【讨论】:
我喜欢你的回答。可以用钩子来实现吗? 是的。在我链接的官方文档中有一个钩子示例 好吧,我遵循官方文档,我不得不说这非常有效。谢谢你,你赢得了赏金。【参考方案2】:你可以使用react-native-flag-secure-android包
yarn add react-native-flag-secure-android
用法
import FlagSecure from 'react-native-flag-secure-android';
function flagSecure(enable)
if (enable)
FlagSecure.activate();
else
FlagSecure.deactivate();
注意:它适用于安卓
【讨论】:
这对ios也有效吗? 还有没有办法改变IOS最近镜像中的镜像?我在原始帖子的评论中读到了关于图书馆 FlagSecure 的评论。 @Legeo 你可以使用npmjs.com/package/react-native-screenshield,它适用于android和ios 您是否尝试使用 yarn 安装库。 npmjs.com/package/react-native-screenshield ?我在安装过程中收到错误。 @Legeo 抱歉我没有测试这个包以上是关于在“最近”屏幕上更改应用程序的预览图像的主要内容,如果未能解决你的问题,请参考以下文章