我正在处理的应用程序显示了一些敏感信息,当按下主页按钮停止应用程序时,这些信息不能显示在"近期任务"屏幕上.
我想模糊屏幕截图中的敏感数据或显示应用徽标.
我知道以下方法,但它们不符合我的要求:
android:excludeFromRecents下将actvitie设置为true可以防止应用程序在最近的任务中被显示出来.这会破坏用户体验.FLAG_SECURE在最近任务屏幕上的空白卡中使用结果.(当我的应用程序进入后台时,如何阻止Android获取屏幕截图?)我不喜欢空白屏幕.但是,如果没有解决方法,我会坚持这个解决方案.onCreateThumbnail似乎是理想的解决方案,但不幸的是,它不起作用,因为它目前没有被操作系统调用:((https://code.google.com/p/android/issues/detail?id=29370)然后我尝试了一些解决方法,但是没有按预期工作:
onPause屏幕截图,而不是实际的活动屏幕截图.但新活动需要很长时间才能打开,这会破坏用户体验.onPause.这对我来说似乎是一个很好的解决方案.不幸的是,最近任务屏幕的屏幕截图是在未指定的时间进行的.在测试期间,在按下"主页"时应用程序关闭之前会快速显示应用程序徽标,但生成的屏幕截图会在此之前的短时间内显示活动.textView.setText(""))具有与刚刚提到的屏幕截图定时相同的问题.列出的解决方法的任何其他想法或解决方案?
据我所知,在Android 4.0(或更高版本)上,默认任务管理器显示程序的最后一个截图,程序图标没有左上角.见图:

我的问题是如何将任务管理器中的应用程序图像(不是图标)更改为自定义?不要问我为什么,我只是需要它.
经过一些研究后,我在SO上找到了类似的问题:在ICS的任务管理器中显示黑色预览屏幕.但它没有回答我的问题.
此外,我没有找到任何API与此任务管理器一起使用.
因此我决定在程序(活动)关闭时显示自定义图像.从活动生命周期中我发现我需要覆盖方法onPause.所以我决定编写一个小程序.这很容易理解:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onResume()
{
super.onResume();
setContentView(createImageView("/sdcard/program-image.jpg"));
}
@Override
public void onPause()
{
setContentView(createImageView("/sdcard/task-manager-image.jpg"));
super.onPause();
}
private ImageView createImageView(String pathFile)
{
ImageView imageView = new ImageView(getApplication());
imageView.setImageBitmap(BitmapFactory.decodeFile(pathFile));
imageView.invalidate();
return imageView;
}
}
Run Code Online (Sandbox Code Playgroud)
在task-manager-image真正显示了按Home键后一段时间,但任务管理器只显示program-image.
这样做有什么好的解决方案吗?
谢谢你的帮助.
我目前有一个5 x 5平方的迷宫游戏(占用屏幕宽度并均匀分割).然后,对于使用x和y坐标的每个框,我使用drawRect来绘制彩色背景.
我遇到的问题是我现在需要在同一位置绘制图像,因此替换当前的普通背景颜色填充.
这是我目前用于drawRect的代码(一些例子):
// these are all the variation of drawRect that I use
canvas.drawRect(x, y, (x + totalCellWidth), (y + totalCellHeight), green);
canvas.drawRect(x + 1, y, (x + totalCellWidth), (y + totalCellHeight), green);
canvas.drawRect(x, y + 1, (x + totalCellWidth), (y + totalCellHeight), green);
Run Code Online (Sandbox Code Playgroud)
然后我还需要为画布中的所有其他方块实现背景图像.此背景将在其顶部绘制简单的1px黑色线条,当前代码以灰色背景绘制.
background = new Paint();
background.setColor(bgColor);
canvas.drawRect(0, 0, width, height, background);
Run Code Online (Sandbox Code Playgroud)
如果可能的话,请你指点一下.如果是这样,那么我可以做的最好的方法是什么,同时尽量减少内存使用量并使1个图像扩展和缩小以填充相关的方形空间(这会因所有不同的屏幕尺寸而变化,因为它会分裂整体屏幕宽度均匀).