我目前正在开发轻量级应用程序,在应用程序的一部分中,我想完全取消在Android中截取屏幕截图的能力。当我说截图时,我在谈论iPhone的“屏幕截图”功能。这是出于安全原因。我意识到有些应用程序允许Android用户也这样做,我想阻止这个功能。无论是禁用硬件按钮,冻结手机还是通过软件,任何方法都可以。
答案 0 :(得分:1)
您可以使用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);
}
有关此主题的更多信息,请访问here。
答案 1 :(得分:0)
在WindowManager.LayoutParams.FLAG_SECURE
方法之前使用setContentView()
,然后
您必须在要保护的所有活动中添加此代码。
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
setContentView(R.layout.activity_main);
}
答案 2 :(得分:0)
在您的项目中添加一个这样的应用程序类,以防止整个应用程序被截屏(应用程序周围的所有活动和片段)。这是example project及下面我提到的核心代码-
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) {
}
});
}
}