我正在处理的应用程序显示了一些敏感信息,当按下主页按钮停止应用程序时,这些信息不能显示在"近期任务"屏幕上.
我想模糊屏幕截图中的敏感数据或显示应用徽标.
我知道以下方法,但它们不符合我的要求:
android:excludeFromRecents下将actvitie设置为true可以防止应用程序在最近的任务中被显示出来.这会破坏用户体验.FLAG_SECURE在最近任务屏幕上的空白卡中使用结果.(当我的应用程序进入后台时,如何阻止Android获取屏幕截图?)我不喜欢空白屏幕.但是,如果没有解决方法,我会坚持这个解决方案.onCreateThumbnail似乎是理想的解决方案,但不幸的是,它不起作用,因为它目前没有被操作系统调用:((https://code.google.com/p/android/issues/detail?id=29370)然后我尝试了一些解决方法,但是没有按预期工作:
onPause屏幕截图,而不是实际的活动屏幕截图.但新活动需要很长时间才能打开,这会破坏用户体验.onPause.这对我来说似乎是一个很好的解决方案.不幸的是,最近任务屏幕的屏幕截图是在未指定的时间进行的.在测试期间,在按下"主页"时应用程序关闭之前会快速显示应用程序徽标,但生成的屏幕截图会在此之前的短时间内显示活动.textView.setText(""))具有与刚刚提到的屏幕截图定时相同的问题.列出的解决方法的任何其他想法或解决方案?
小智 36
几个月前我和你一样对此进行了调查.
不幸的是,我不得不得出结论,这根本不可能.我挖掘了android源代码并确认了它.
FLAG_SECURE,这部分代码不接受任何输入或更改.SECURE_FLAG或视图的任何其他障碍).另外,这些图像可以在仿真器上找到/data/system_ce/0/recent_images.FLAG_SECURE,这将阻止截取您的应用程序的屏幕截图.我尝试将此FLAG设置onPause并将其删除onResume,但是如前所述,这些生命周期方法已经在截屏后已经运行,因此完全没有效果.如如何更改最近的应用列表显示的快照中所述?曾经有一个可以用来自定义缩略图的回调:onCreateThumbnail.但是,这不起作用,永远不会被调用.要清楚的是,回调仍然存在,它根本就不会被操作系统调用.它停止工作的事实记录很少,但显然在4.0.3中被默默地弃用/删除
至于缩略图本身,它是服务器端的截图.它被onPause调用之前(或实际上在任何回调之前,表明你的活动即将进入后台被调用).
当您的应用程序进入后台时,您的实际视图将被设置为动画(以实现缩小过渡).你可以通过改变来影响那个动画onPause(如果你足够快的话)(我尝试在窗口中将不透明度设置为0等).但这只会影响动画.动画完成后,视图将被之前拍摄的屏幕截图所取代.
另请参阅以下讨论此问题的问题:
在整个 Activity 之上实现布局覆盖怎么样?
使其透明,默认情况下是点击式的,因此在使用时不会对用户体验产生负面影响。
如果onPause()设置一个半透明的模糊图像作为该布局的背景,则其后面的数据将被打乱。再次将onResume()背景更改为完全透明。瞧。
它可能比其他类型的覆盖更快。积极的副作用是,如果您在用户返回时将模糊处理作为短动画效果(使用使用 C++ 而不是 Java 的适当库),它甚至可能看起来很酷,并且用户甚至不介意看到它。
我自己没有尝试过,但这是你还没有尝试过的。
| 归档时间: |
|
| 查看次数: |
6190 次 |
| 最近记录: |