用例是当用户在edittext中输入信息时,有意或无意的用户在后台发送应用程序。在这种情况下,我不想在最近的应用程序列表屏幕截图中显示edittext信息,当用户再次恢复应用程序时,我想在edittext中填充相同的信息。
答案 0 :(得分:4)
另一种选择是:
FLAG_SECURE - 将窗口内容视为安全,防止其出现在屏幕截图中或在非安全显示器上查看。
更多详情here
但是这也不允许截图(不确定你是否想要)?
要使用此功能,请将以下行添加到onCreate()
:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
<强> ------------------------ EDIT ------------------- ------ 强>
如果您想在“最近的应用”列表中显示应用程序,但没有editText,那么您可能想要执行以下操作:
private string mySecretText;
@Override
public void onPause() {
super.onPause(); // Always call the superclass method first
//Now we remember the text
mySecretText = myEditText.getText().toString();
//Optional save it in your Shared Preferences
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("secretText", mySecretText);
editor.apply();
//Remove the text from the editText
myEditText.setText("");
}
@Override
public void onResume() {
super.onResume(); // Always call the superclass method first
//Optional load it from your Shared Preferences
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
mySecretText = preferences.getString("secretText", "Default"); //U can remove default if u want
myEditText.setText(mySecretText);
}
<强> ------------------------ EDIT ------------------- ------ 强>
或者你可以更改完整的缩略图:
onCreateThumbnail - 为此活动生成新缩略图。此方法在暂停活动之前称为,并应在outBitmap中绘制该位图维度中所需缩略图的图像。它可以使用给定的画布,它被配置为绘制到位图中,以便在需要时进行渲染。
重要!: 默认实现返回失败,并且不绘制缩略图;如果需要,这将导致平台创建自己的缩略图。
所以创建你自己的缩略图
@Override
public boolean onCreateThumbnail (Bitmap outBitmap, Canvas canvas) {
Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.myBitmap);
canvas.drawBitmap(myBitmap, 0, 0, null);
return true;
}
祝你好运!
答案 1 :(得分:0)
您可以使用活动生命周期回调方法清除( .clear())或填充( .setText(“some text”))EditText。
onResume:用户看到并可以与活动互动。
onPause:活动部分或全部在后台。
您可以将信息保存为MODE_PRIVATE中当前活动的共享首选项。
SharedPreferences sharedPreferences;
sharedPreferences = getPreferences(Context.MODE_PRIVATE);
撰写共享首页
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("INFO", "some text");
editor.commit();
阅读共享首页
String info = sharedPreferences.getString("INFO", "default value");
因此,您可以在onResume中读取SP,并在清除EditText内容之前将其写入onPause。
答案 2 :(得分:0)
在执行的异步任务中添加这些行
1.如果你想隐藏编辑文本框,那么editext.setVisibility(View.INVISIBLE);
要么
2.如果您想要清除内容,请editext.clear();
答案 3 :(得分:0)
您可以在清单文件中尝试使用android:noHistory="true"
属性作为活动标记。
它会破坏痕迹。
或者,如果您想在最近的列表中显示空白视图,那么:
覆盖onStop()
方法,在调用 super.onStop()
之前,尝试将活动的内容视图重置为一些空白的xml文件。
Android框架可能会为您的应用制作屏幕截图,以便在调用activity.onStop()
时在最近的应用中显示。
希望它能解决你的问题。