微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Java/Kotlin 中禁用 EditText Clip 板操作

如何解决在 Java/Kotlin 中禁用 EditText Clip 板操作

如何在 Java/Kotlin 代码中对密码类型的字段禁用文本复制和粘贴操作?

解决方法

fun disableClipboardAction(context : Context,editText: EditText){
            try {
                editText.onFocusChangeListener = View.OnFocusChangeListener { v,hasFocus ->
                    if (hasFocus) {
                        val clipboard: ClipboardManager =
                            context.getSystemService(AppCompatActivity.CLIPBOARD_SERVICE) as ClipboardManager
                        val clipData = ClipData.newPlainText("text","")
                        clipboard.setPrimaryClip(clipData)
                    }
                }
    
                editText.customSelectionActionModeCallback =
                    object : android.view.ActionMode.Callback {
                        override fun onCreateActionMode(
                            mode: android.view.ActionMode?,menu: Menu?
                        ): Boolean {
                            return false
                        }
    
                        override fun onPrepareActionMode(
                            mode: android.view.ActionMode?,menu: Menu?
                        ): Boolean {
                            return false
                        }
    
                        override fun onActionItemClicked(
                            mode: android.view.ActionMode?,item: MenuItem?
                        ): Boolean {
                            return false
                        }
    
                        override fun onDestroyActionMode(mode: android.view.ActionMode?) {
                        }
    
                    }
            } catch (exception: Exception) {
                exception.printStackTrace()
            }
        }
,

如果您使用的是 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 将阻止启动操作模式(全选、剪切、复制和粘贴操作)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。