实现 EditText 禁止复制粘贴菜单

  • 禁止长按事件
  • ActionMode 回调
  • 反射 android.widget.Editor 修改弹框菜单不显示
/** * 禁止输入框复制粘贴菜单 */public void disableCopyAndPaste(final EditText editText) {    try {        if (editText == null) {            return ;        }        editText.setOnLongClickListener(new View.OnLongClickListener() {            @Override            public boolean onLongClick(View v) {                return true;            }        });        editText.setLongClickable(false);        editText.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                if (event.getAction() == MotionEvent.ACTION_DOWN) {                    // setInsertionDisabled when user touches the view                    setInsertionDisabled(editText);                }                return false;            }        });        editText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {            @Override            public boolean onCreateActionMode(ActionMode mode, Menu menu) {                return false;            }            @Override            public boolean onPrepareActionMode(ActionMode mode, Menu menu) {                return false;            }            @Override            public boolean onActionItemClicked(ActionMode mode, MenuItem item) {                return false;            }            @Override            public void onDestroyActionMode(ActionMode mode) {            }        });    } catch (Exception e) {        e.printStackTrace();    }}private void setInsertionDisabled(EditText editText) {    try {        Field editorField = TextView.class.getDeclaredField("mEditor");        editorField.setAccessible(true);        Object editorObject = editorField.get(editText);        // if this view supports insertion handles        Class editorClass = Class.forName("android.widget.Editor");        Field mInsertionControllerEnabledField = editorClass.getDeclaredField("mInsertionControllerEnabled");        mInsertionControllerEnabledField.setAccessible(true);        mInsertionControllerEnabledField.set(editorObject, false);        // if this view supports selection handles        Field mSelectionControllerEnabledField = editorClass.getDeclaredField("mSelectionControllerEnabled");        mSelectionControllerEnabledField.setAccessible(true);        mSelectionControllerEnabledField.set(editorObject, false);    } catch (Exception e) {        e.printStackTrace();    }}

Disable EditText context menu



 

更多相关文章

  1. android 属性系统使用的小问题
  2. Android(安卓)滚动事件 OnScrollListener
  3. Android(安卓)wifi设计原理(源码分析)
  4. Android(安卓)Tips
  5. Android(安卓)databinding RecycleView item 子控件点击事件
  6. Android长按弹出菜单
  7. Android(安卓)Enter软件盘监听事件。
  8. Eclipse+android 开发配置步骤
  9. Android(安卓)四个步骤集成EventBus事件总线框架实现消息发送和

随机推荐

  1. NDK/JNI01--NDK下载配置
  2. Android 学习——Android 菜单(OptionMen
  3. [Android入门]体系结构、UI组件使用、获
  4. 【Android】蓝牙快速开发工具包-入门级
  5. 整理 酷炫 Android(安卓)开源UI框架 引导
  6. 理解杀进程的实现原理
  7. AndroidStudio 3.0 加载Android support
  8. android防止屏幕关闭后后台服务停止运行
  9. Android游戏框架之基础之AA碰撞系统
  10. [转]Android 调用系统摄像头