How to deduct chars pasted in edit text from clipboard in Android

Viewed 15

I am trying to restrict paste char from clipboard in Android. I am not able to get any call backs or Listeners for paste event when I paste from clipboard. I got some solution from stack over flow.

EditText et = (EditText) mView.findViewById(R.id.yourEditText);
et.addTextChangedListener(new TextWatcher() {

  @Override
  public void onTextChanged(CharSequence s, int start, int before, int count) {
     if (count > 2) toast("text was pasted");
  }

  @Override
  public void beforeTextChanged(CharSequence s, int start, int count, int after) {

  }

  public void afterTextChanged(Editable s) {
               
  }
});

But the problem is if user pasted 1 char mean it is not consider as paste event. So I gave another hack using setOnKeyListener.

private boolean isNumberPressed = false;

    private void setKeyListener() {
        editText1.setOnKeyListener(new OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                isNumberPressed = event.getAction() == KeyEvent.ACTION_DOWN &&
                        keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9;
                return false;
            }
        });
    }

So if isNumberPressed become true mean, user enter the value from keyboard. If it is false, user directly paste the event from clipboard. It is working fine in some devices OnKeyListener is not working. Because it is only worked for hardware keyboard buttons.

Now my question is how to deduct the key event without using OnKeyListener. And is there any other way to deduct paste event from clipboard?? I am not using onTextContextMenuItem. I want to use keyboard clipboard paste event.

0 Answers
Related