在“最近”屏幕上更改应用程序的预览图像

Posted

技术标签:

【中文标题】在“最近”屏幕上更改应用程序的预览图像【英文标题】:Change the preview image of an app on Recents Screen 【发布时间】:2018-05-16 20:28:52 【问题描述】:

我正在制作一个 React Native 应用程序,它有一个安全部分,用户必须在其中输入密码才能解锁受保护的内容。问题是,当用户在锁定该部分之前切换到另一个应用程序时,将生成屏幕截图以及解锁内容并显示在Recents Screen上。

有没有办法将预览替换为其他内容、空白屏幕或自定义屏幕(如 Chrome/Firefox 隐身模式)?

【问题讨论】:

在标准 android 中,您可以使用 use FLAG_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 抱歉我没有测试这个包

以上是关于在“最近”屏幕上更改应用程序的预览图像的主要内容,如果未能解决你的问题,请参考以下文章

Cloudinary 最近的图像正在覆盖屏幕上显示的所有表单图像?

Android:更改屏幕上的相机预览大小

在 WordPress 中预览主题

在Android中更改状态栏颜色

图像视图在 3.5 和 4 英寸屏幕上更改高度

/p 预览模式中的屏幕保护程序在desk.cpl 关闭后继续运行