想要在活动进入后台之前清除EditText内容

时间:2016-06-14 12:40:37

标签: android android-activity android-edittext

用例是当用户在edittext中输入信息时,有意或无意的用户在后台发送应用程序。在这种情况下,我不想在最近的应用程序列表屏幕截图中显示edittext信息,当用户再次恢复应用程序时,我想在edittext中填充相同的信息。

4 个答案:

答案 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()时在最近的应用中显示。

希望它能解决你的问题。