1

我有一个编辑文本,长按它我不希望自动填充选项包含在侧面复制、粘贴、选择等中

我试着做下面的代码,这反过来对我没有帮助

if (Build.VERSION.SDK_INT >= 26) {
            AutofillManager autofillManager = cxt.getSystemService(AutofillManager.class);
            if (null != autofillManager) {
                view.setImportantForAutofill(IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS);
                autofillManager.disableAutofillServices();
                autofillManager.cancel();
            }
        }

我希望不应该列出自动填充选项,但它与复制、粘贴、选择等一起列出

4

2 回答 2

0

答案与我在这里给出的几乎完全相同: https ://stackoverflow.com/a/59870250/7729375

唯一的区别是 removeItem 的目标 Id 现在是android.R.id.autofill,并且它需要 API 26 (Android O) 的注释

爪哇:

ActionMode.Callback callback = new ActionMode.Callback() {
            @Override
            @TargetApi(26)
            public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                if (menu != null) {
                    menu.removeItem(android.R.id.autofill);
                }
                return true;
            }

            @Override
            public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                return true;
            }

            @Override
            public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
                return false;
            }

            @Override
            public void onDestroyActionMode(ActionMode mode) {

            }
        };

        mEditText.setCustomInsertionActionModeCallback(callback);

        mEditText.setCustomSelectionActionModeCallback(callback);

科特林:

val callback = object : ActionMode.Callback {
    override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
        return false
    }

    @TargetApi(Build.VERSION_CODES.O)
    override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        menu?.removeItem(android.R.id.autofill)
        return true
    }

    override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        return true
    }

    override fun onDestroyActionMode(mode: ActionMode?) {}
}

然后用于 EditText 中的使用站点:

fun preventPaste() {
    customInsertionActionModeCallback = callback
    customSelectionActionModeCallback = callback
}
于 2020-01-23T01:00:08.400 回答
0

您可以通过自定义 EditText 类执行此操作,只需执行以下步骤:

1)扩展EditText类,

2) 覆盖isSuggestionsEnabled()return false,

3)创建一个canPaste()方法并返回false。这是方法隐藏。

如果仍然无法正常工作,您也可以禁用 EditText 中的长按。

mEditText.setLongClickable(false);

并通过从这些方法返回 false 来禁用上下文菜单:

mEditEext.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;
            }
        });
于 2019-04-10T12:43:33.547 回答