我解决了这个问题如下:
我包括了一个布局:
文件 activity_settings.xml
<include layout="@layout/view_authentication"
android:id="@+id/authenticationView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
文件 view_authentication.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/authenticationView"
android:clipToPadding="false">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:padding="10dp">
<EditText
android:id="@+id/authentication_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:hint="Password"
android:password="true"/>
<Button
android:id="@+id/authentication_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="@string/authentication_button"/>
</LinearLayout>
</RelativeLayout>
在我的 SettingsActivity.java 中,我在 onCreate() 中添加了以下行。这可以防止截屏并阻止在最近的应用程序中看到任何内容
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
在 onResume() 中,它在第一次打开应用程序或重新打开应用程序之前被调用。我调用以下方法:
public void showAuthenticationFrame() {
authenticationView.setVisibility(View.VISIBLE);
contentFrame.setVisibility(View.GONE);
}
当输入正确的密码时,我会做相反的事情,我将 authenticationView 设置为 GONE 并将 contentFrame 设置为 VISIBLE。