我想阻止用户将文本或图像从屏幕复制到任何文本编辑器。
另外,我想阻止拍摄活动的屏幕截图。
如何在Android中以编程方式执行此操作?
答案 0 :(得分:4)
就屏幕截图而言 - 尝试使用FLAG_SECURE
- 作为docs州
窗口标记:将窗口内容视为安全,防止其出现在屏幕截图中或在非安全显示屏上显示。
您可以在Activity中使用它,如下所示:
public class NonScreenshotableActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Place this before setting layout but after calling super method
getWindow().setFlags(LayoutParams.FLAG_SECURE,
LayoutParams.FLAG_SECURE);
setContentView(R.layout.my_layout);
//Rest of your activity code here
}
}
您还可以使用以下内容停止复制/粘贴任何EditText
字段:
yourEditText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
});
您可以查看ActionMode.Callback()
var aDictionary = [String : [Int : Int]]()
let array = Array(aDictionary.keys)
了解更多信息,但它基本上会中止加载复制/粘贴对话框
答案 1 :(得分:0)
Ed George回答第一部分!
这是下半场
如果您使用的是API级别11或更高级别,则可以停止复制,粘贴,剪切和自定义上下文菜单。
edittext.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
});
从onCreateActionMode(ActionMode,Menu)返回false将阻止启动操作模式(选择全部,剪切,复制和粘贴操作)。