我目前正在开发一个轻量级应用程序,在该应用程序的一部分中,我想完全取消在 Android 中截取屏幕截图的能力。当我说屏幕截图时,我指的是 iPhone 的“屏幕截图”功能。这是出于安全原因。我意识到有些应用程序也允许 Android 用户执行此操作,我想阻止此功能。任何方式都可以,无论是禁用硬件按钮、冻结手机还是通过软件。
问问题
5660 次
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_SECURE
beforesetContentView()
方法,您必须在所有要保护的活动中添加此代码。
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 回答