4

我目前正在开发一个轻量级应用程序,在该应用程序的一部分中,我想完全取消在 Android 中截取屏幕截图的能力。当我说屏幕截图时,我指的是 iPhone 的“屏幕截图”功能。这是出于安全原因。我意识到有些应用程序也允许 Android 用户执行此操作,我想阻止此功能。任何方式都可以,无论是禁用硬件按钮、冻结手机还是通过软件。

4

3 回答 3

4

您可以使用窗口 LayoutParam FLAG_SECURE。将此添加到您的onCreate方法中:

if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
}

可以在此处找到有关此主题的更多信息。

于 2013-08-23T01:13:01.907 回答
0

使用WindowManager.LayoutParams.FLAG_SECUREbeforesetContentView()方法,您必须在所有要保护的活动中添加此代码。

public void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
            WindowManager.LayoutParams.FLAG_SECURE);
    setContentView(R.layout.activity_main);
}
于 2019-03-26T09:56:17.927 回答
0

像这样在您的项目中添加一个应用程序类,以防止整个应用程序截屏(您的应用程序周围的所有活动和片段)。这是示例项目,下面我提到了核心代码 -

public class MyApplicationContext extends Application {

    private  Context context;

    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();
        setupActivityListener();
    }

    private void setupActivityListener() {
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
                activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);            }
            @Override
            public void onActivityStarted(Activity activity) {
            }
            @Override
            public void onActivityResumed(Activity activity) {

            }
            @Override
            public void onActivityPaused(Activity activity) {

            }
            @Override
            public void onActivityStopped(Activity activity) {
            }
            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
            }
            @Override
            public void onActivityDestroyed(Activity activity) {
            }
        });
    }
}
于 2021-02-14T06:01:28.893 回答